RosettaCodeData/Task/Animate-a-pendulum/Liberty-BASIC/animate-a-pendulum.basic

43 lines
870 B
Plaintext

nomainwin
WindowWidth = 400
WindowHeight = 300
open "Pendulum" for graphics_nsb_nf as #main
#main "down;fill white; flush"
#main "color black"
#main "trapclose [quit.main]"
Angle = asn(1)
DeltaT = 0.1
PendLength = 150
FixX = int(WindowWidth / 2)
FixY = 40
timer 30, [swing]
wait
[swing]
#main "cls"
#main "discard"
PlumbobX = FixX + int(sin(Angle) * PendLength)
PlumbobY = FixY + int(cos(Angle) * PendLength)
AngAccel = -9.81 / PendLength * sin(Angle)
AngVelocity = AngVelocity + AngAccel * DeltaT
Angle = Angle + AngVelocity * DeltaT
#main "backcolor black"
#main "place ";FixX;" ";FixY
#main "circlefilled 3"
#main "line ";FixX;" ";FixY;" ";PlumbobX;" ";PlumbobY
#main "backcolor red"
#main "circlefilled 10"
wait
[quit.main]
close #main
end