43 lines
1.1 KiB
Text
43 lines
1.1 KiB
Text
global RODLEN, GRAVITY, DT
|
|
global velocity, acceleration, angle, posX, posY
|
|
|
|
on startMovie
|
|
|
|
-- window properties
|
|
_movie.stage.title = "Pendulum"
|
|
_movie.stage.titlebarOptions.visible = TRUE
|
|
_movie.stage.rect = rect(0, 0, 400, 400)
|
|
_movie.centerStage = TRUE
|
|
_movie.puppetTempo(30)
|
|
|
|
RODLEN = 180
|
|
GRAVITY = -9.8
|
|
DT = 0.03
|
|
|
|
velocity = 0.0
|
|
acceleration = 0.0
|
|
angle = PI/3
|
|
posX = 200 - sin(angle) * RODLEN
|
|
posY = 100 + cos(angle) * RODLEN
|
|
paint()
|
|
|
|
-- show the window
|
|
_movie.stage.visible = TRUE
|
|
end
|
|
|
|
on enterFrame
|
|
acceleration = GRAVITY * sin(angle)
|
|
velocity = velocity + acceleration * DT
|
|
angle = angle + velocity * DT
|
|
posX = 200 - sin(angle) * rodLen
|
|
posY = 100 + cos(angle) * rodLen
|
|
paint()
|
|
end
|
|
|
|
on paint
|
|
img = _movie.stage.image
|
|
img.fill(img.rect, rgb(255,255,255))
|
|
img.fill(point(200-5, 100-5), point(200+5, 100+5), [#shapeType:#oval,#color:rgb(0,0,0)])
|
|
img.draw(point(200, 100), point(posX, posY), [#color:rgb(0,0,0)])
|
|
img.fill(point(posX-20, posY-20), point(posX+20, posY+20), [#shapeType:#oval,#lineSize:1,#bgColor:rgb(0,0,0),#color:rgb(255,255,0)])
|
|
end
|