Read Me
see http://forums.keenswh.com/post/fix-the-physics-use-relative-reference-frames-6841331?&trail=105
SOI = sphere of influence
CS = collision sphere
E = entity
EOM = equation of motion
ISV = inertial state vector
X-X = extends
|-X or \-X = has member
SOI = sphere of influence - currently adds nothing.
CS = collision sphere - predicts and handles collisions and moving between collision spheres.
E = entity - a spatio-temporal object.
ISV = inertial state vector - a space-time snapshot. can give you predictions on where it will be at any given time.
EOM = equation of motion - how the object moves through it's reference frame.
SOI-CS-E
\-ISV
\-EOM
TODO: when an object changes collisionsphere parent (Entity.changeParentCollisionSphere), it needs to do a hit test of all spheres in it, recursively, and add those.
TODO: make mechanism for adding/creating entities, from any given reference frame. give them an soi if needed (based on (sqrt of mass)/radius). set all relevant variables.
TODO: need to make the clock's main loop iterate on a timer, e.g. with a timer thread. then we can cancel the thread if theres a timeOfNextEventChanged
DONE: need to pass up entity perturbed events to the universe.
DONE: also need to give the collisionspheres a special entity so they can add a central object that creates its mass - when that object gets hit, it should cancel out any inertia gain by adding the inverse to the collision sphere.
need tho thus make an addinertia function, probably...
DONE: add basic instant rate of distance change to isv, use that when processing a collision to determine whether coming or going. note: it's the first derivative of distance, so take the quartic, turn it into a cubic, solve.