Yet another version of the pendula simulator script, which is now dyadic,
taking a left argument of the amount of time to simulate, (approx 30 works)
and a right argument fixed the number of turtles/pendula (approx 9 works).
A video clip link follows.

http://youtu.be/xW8U9mJOHgU

My pendulum simulation is coming along a little bit. The newer version of
the script is included below. I have different experiences with different
browsers, but I don't know how to generalize on that statement. In general,
various scaling factors alter the simulation, but I cannot elaborate on
their settings.

The main problem relates to my version of turtle graphics relative to the
original Python/Logo, which contains a turtle control called setheading
which is intelligent enough to reverse the turtle when the pitch angle of
the heading goes past pi. Lacking such a control my turtle graphics system
needed to separately distinguish such a change in direction. My crude
attempt at making this fix produces a small anomaly in the pendulum path
resulting in the swings of the pendulum not exactly repeating each other
necessarily.

Another problem is that the simulation cannot long run for very long at
least on my computer. Perhaps a JSON version would get around this problem.

As always, any ideas would be appreciated.


NB.
http://code.activestate.com/recipes/577553-pendulum-simulation-with-turtle/

NB. to execute load this after loading tgsjhs.ijs; enter something like:
main 4

coclass'tgsj'
coinsert'jhs'

GA =: 9.80665 NB. Gravitational Acceleration (meters per second squared)

scale =: 2
fdscale =: 0.05
NB. 21 main 5 works but 21 main 9 may not, for example
main =: 4 : 0
duration =: x
PENDING=: ''
NUMBER=: 0
NB. Step_scale =: %100
init ''
cs''
initTurtles y
pu ''

scalediff =. scale * 0.05
setlength =. <.@-: + 4 +i.
length =. setlength y
xdist =. * i:@-:@<:
ngol =: - GA % length    NB. Negative G over L
total_time =: 0.0        NB. Seconds
angle =: 1.0             NB. Initial angle of pendulum (radians)
sinAngle =. sin angle
goto scale * (xdist,.-@setlength,.sinAngle * -@setlength) y
speed =: 0.0             NB. Initial angular velocity (radians/second)
time_step =: 0.05        NB. Seconds
NB. pt dfr -pi-1
while. total_time < duration do.
    total_time =: total_time + time_step
    oldspeed =: speed
    speed =: speed + ngol * (sin angle) * time_step
    angle =: angle + speed * time_step
    pt dfr pi * speed ~:&*&(+&scalediff) oldspeed
    pt dfr speed * time_step
    fd fdscale * length
end.
)

Thanks, again for all the help,

-- 
(B=)
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to