'Coded By Ashish on 4 March, 2018
_TITLE "3D Double Pendulum [Press Space for new settings]"
settings:
tracerSize = 0
g = 0
pendulum(0).r = p5random(.7, 1.1)
pendulum
(0).angInc
= p5random
(0, _PI(2))pendulum
(0).angSize
= p5random
(_PI(.3), _PI(.6))
pendulum(1).r = p5random(.25, .5)
pendulum
(1).angInc
= p5random
(0, _PI(2))pendulum
(1).angSize
= p5random
(_PI(.3), _PI(1.1))
glAllow = -1
pendulum
(0).ang
= SIN(pendulum
(0).angInc
) * pendulum
(0).angSize
+ _PI(.5)
t1.x
= COS(pendulum
(0).ang
) * pendulum
(0).r
+ pendulum
(0).
POS.x
t1.y
= SIN(pendulum
(0).ang
) * pendulum
(0).r
+ pendulum
(0).
POS.y
t1.z
= COS(pendulum
(0).ang
) * pendulum
(0).r
+ pendulum
(0).
POS.z
pendulum
(1).ang
= SIN(pendulum
(1).angInc
) * pendulum
(1).angSize
+ pendulum
(0).ang
t2.x
= COS(pendulum
(1).ang
) * pendulum
(1).r
+ pendulum
(1).
POS.x
t2.y
= SIN(pendulum
(1).ang
) * pendulum
(1).r
+ pendulum
(1).
POS.y
t2.z
= SIN(pendulum
(1).ang
) * pendulum
(1).r
+ pendulum
(1).
POS.z
pendulum(0).angInc = pendulum(0).angInc + .02
pendulum(1).angInc = pendulum(1).angInc + .043
IF g
> 40 AND tracerSize
< UBOUND(tracer
) - 1 THEN tracerSize
= tracerSize
+ 1
g = g + 1
glInit = -1
gluLookAt 0, 0, -4, 0, 1, 0, 0, -1, 0
FOR i
= 0 TO tracerSize
- 2 _glColor3f 0, map
(tracer
(i
).x
, -1, 1, .5, 1), map
(tracer
(i
).y
, -1, 1, .5, 1) _glColor3f 0, map
(tracer
(i
+ 1).x
, -1, 1, .5, 1), map
(tracer
(i
+ 1).y
, -1, 1, .5, 1) _glVertex3f tracer
(i
+ 1).x
, tracer
(i
+ 1).y
, tracer
(i
+ 1).z
glutSolidSphere .1, 15, 15
glutSolidSphere .1, 15, 15
clock# = clock# + .01
'taken from p5js.bas
'https://bit.y/p5jsbas
p5random!
= RND * (mx!
- mn!
) + mn!
FUNCTION map!
(value!
, minRange!
, maxRange!
, newMinRange!
, newMaxRange!
) map! = ((value! - minRange!) / (maxRange! - minRange!)) * (newMaxRange! - newMinRange!) + newMinRange!