ianmackenzie / elm-geometry

2D/3D geometry package for Elm
Mozilla Public License 2.0
183 stars 26 forks source link

Test quaternions vs. basis directions for Frame3d implementation #109

Open ianmackenzie opened 5 years ago

ianmackenzie commented 5 years ago

Using quaternions internally would be more compact (fewer allocations!) and would avoid the potential issue of basis directions becoming denormalized/non-orthogonal after repeated rotations. On the other hand, using quaternions could mean that placeIn/relativeTo would be slower (a bit more math to do) and would mean that anything that called Frame3d.xDirection (directly, or indirectly via Frame3d.xAxis etc.) would require allocating a new Direction3d value instead of simply returning the internal Direction3d. To be benchmarked!

ianmackenzie commented 5 years ago

Along the same lines, Frame2d could be internally represented using something like an Angle instead of a pair of basis directions.

ianmackenzie commented 5 years ago

One issue to keep in mind: it's also necessary to be able to represent left-handed frames. Is it sufficient to just have an internal Bool flag? Is there a better way?