(1) Objects in space will be either ships that can move or stationary things like non-moving game-controlled ships, space-stations , moons and planets.

(2) Objects will not have spatial extent

(3) Space is non-continuous

(4) Collision happens only when one object is stationary or each moving objects are moving directly toward each other, on the same line.

(5) Movement happens by setting a destination vector and a speed. There's no steering exactly, but you can change destination while moving, slow down or stop suddenly.

(6) Octree looks like the data structure I want to use for modeling. I'm looking at http://hackage.haskell.org/package/Octree as best library for my application, if I am right about how to go about updating. I'm not sure I am.


I think I can use the octree to track things in space, rather than having a node for each point.
At most there will be say, 200 objects in space, therefore at most 200 nodes in the tree. So I am visualizing the following steps:

(1) Begin with a [(Vector3, a)]. This includes stationary objects and ships already in space.
(2) If a new ship entered this space, add it to end of list.
(3) make Octree a from above list
(4) ships move by setting destination vector and then speed, calculate next Vector3 they will be at next tick
(5) Make a new [(Vector3, a)]
(6) Go to (1)

The first problem with this is in creating a new Octree from a list, when I would rather just recreate the new tree with a subtree of the nodes that changed. The library I am considering does not offer that operation. Maybe this is not a real problem considering the maximum objects in space will be 200.

There may be other problems with my thinking here. I look to haskell-cafe for any insight it may offer.