- #1
qwe
- 25
- 0
i believe I'm using the correct equations, but the orbit won't work. here is the relevant code for a 2 particle simple orbit simulation. I'm not sure what I'm doing wrong
Code:
...
timeStep = 1.0
gravityConstant = 6.67384 * 10.0 ^ -11.0
...
// (initialize particles)
// p[n].m: mass, p[n].x: initial x position, p[n].vz: initial velocity vector along z axis
p[0].m = 1.0
p[1].m = 1.0
p[0].t = 0
p[0].x = 10.0
p[1].t = 0
p[1].x = -10.0
// initial velocity = sqrt(m2 ^2 * G / m1 + m2 * distance)
p[0].vz = sqrt( ( p[1].m * p[1].m * gravityConstant ) / ( p[0].m + p[1].m * 10.0 ) )
p[1].vz = sqrt( ( p[0].m * p[0].m * gravityConstant ) / ( p[1].m + p[0].m * 10.0 ) ) * -1
...
// (each loop, for each particle... p[n] is current particle, p[m] is other particle)
// calculate distance
dx# = p[m].x - p[n].x
dy# = p[m].y - p[n].y
dz# = p[m].z - p[n].z
distance# = sqrt( dx# * dx# + dy# * dy# + dz# * dz# )
// calculate force
force# = (gravityConstant * p[n].m * p[m].m) / (distance# * distance#)
// calculate acceleration, include timestep
acceleration# = (force# / p[n].m) * timeStep
// calculate unit vector and calculate magnitude of vector (acceleration)
p[n].vx = p[n].vx + dx# * (acceleration# / distance# )
p[n].vy = p[n].vy + dy# * (acceleration# / distance# )
p[n].vz = p[n].vz + dz# * (acceleration# / distance# )
Last edited: