<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div>This is a continuation of a conversation started in the following two links.<br><br><a href="https://groups.google.com/forum/#!searchin/haskell-cafe/michael$20litchard|sort:date/haskell-cafe/n0Tc29UUgoQ/iitt3z3PCwAJ">https://groups.google.com/forum/#!searchin/haskell-cafe/michael$20litchard|sort:date/haskell-cafe/n0Tc29UUgoQ/iitt3z3PCwAJ</a><br><br><a href="https://groups.google.com/forum/#!searchin/haskell-cafe/michael$20litchard|sort:date/haskell-cafe/qD2kaZ9qpEA/jTDAp8KoCgAJ">https://groups.google.com/forum/#!searchin/haskell-cafe/michael$20litchard|sort:date/haskell-cafe/qD2kaZ9qpEA/jTDAp8KoCgAJ</a><br><br></div>I am trying to model a 3-D space for a mudlike. Here's the criteria I have so far:<br><br></div>(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.<br><br></div>(2) Objects will not have spatial extent<br><br></div>(3) Space is non-continuous<br><br></div>(4) Collision happens only when one object is stationary or each moving objects are moving directly toward each other, on the same line. <br></div><div><br></div><div>(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.<br><br></div>(6) Octree looks like the data structure I want to use for modeling. I'm looking at <a href="http://hackage.haskell.org/package/Octree" target="_blank">http://hackage.haskell.org/package/Octree</a> as best library for my application, if I am right about how to go about updating. I'm not sure I am.<br><br><br></div>I think I can use the octree to track things in space, rather than having a node for each point.<br></div>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:<br><br></div>(1) Begin with a [(<a href="http://hackage.haskell.org/package/Octree-0.5.4.2/docs/Data-Octree.html#t:Vector3">Vector3</a>, a)]. This includes stationary objects and ships already in space.<br></div>(2) If a new ship entered this space, add it to end of list.<br></div>(3) make Octree a from above list<br></div>(4) ships move by setting destination vector and then speed, calculate next Vector3 they will be at next tick<br></div>(5) Make a new [(<a href="http://hackage.haskell.org/package/Octree-0.5.4.2/docs/Data-Octree.html#t:Vector3">Vector3</a>, a)]<br></div>(6) Go to (1)<br><br>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.<br><br></div><div>There may be other problems with my thinking here. I look to haskell-cafe for any insight it may offer.<br></div></div>