Pendulum problemArchives Forums/BlitzPlus Programming/Pendulum problem
| Hi! I wanted to create a simulation of a pendulum so I did some researcher on equations to use. After a while I found this one:|
Fa = -mg*Sin(angle). I tried to create a pendulum based on that formula but I failed. What am I doing wrong?
Global pendelimg = LoadImage("pendelimg.png") ; 128,16px
Global angle# = 45
Global mg# = 9.8
While Not KeyHit(1)
Fa = -mg*Sin(angle-90)
angle = angle + Fa
copypendel = CopyImage(pendelimg)
| Can't run the code here, but I suspect that the problem is the size of your 'timestep'.|
Try introducing a timestep variable dt#=0.01
See if that helps. You can experiment with values of dt- generally as timestep increases the simulation strays further from the mathematical model.
| You started with a differential equation: F = m*a, meaning force equals mass times acceleration. |
Thus acceleration is -g*Sin(angle). Acceleration is the second derivative of the angle with respect to time.
In principle this can be solved to give angle as a function of time. But in practice it can't.
There are two options. You can use some numerical method, such as Runge-Kutta, for dealing with differential equations.
But the usual approach is to use a simpler, but approximate, equation. For small angles Sin(angle) is almost exactly equal to angle.
Note: this is in radians, not degrees.
That gives a new differential equation of the form
acceleration = constant * angle
which can be solved exactly.
There is a nice overview here. The solution is in the box at the bottom.