
Hervé Brönnimann wrote:
I'm always amazed that this discussion comes up from time to time and no one mentions cgal (www.cgal.org) which has a lot of the functionality (although 3D transformations could perhaps be improved, you can do it by extending the framework).
In addition to kernel objects (2D, 3D, and d-dimensional for any d), incl. usual objects and transformation hierarchy, and predicates / constructions / intersections / distance computations, it has a bunch of data structure and algorithms such as convex hulls, minimum encl. boxes and ellipsoids, interpolation, triangulations and meshes, whatnot. It is *huge* and if not complete, much more so than anything you would write from scratch. It's also very easy to screw those functions, such as distance between two segments in 3D. Just try, and then you'll appreciate how much cgal can do for you.
Their transformation hierarchy is excellent, storing only a single float/double for a scaling transformation from the origin, or three float/doubles for a translation, e.g., and allowing either Cartesian or homogeneous coordinates. It would be much more efficient to design an interface for quaternion / Euler angles / yaw/pitch/roll on top of the 3D transformation hierarchy, and the folks at cgal would not only love you but perhaps integrate your contribution into their releases. (Making no promises, I'm not involved with this project any more...)
Go take a look at www.cgal.org and send msgs to their devel mailing list for any questions. Good luck with your projects regardless if you do or not!
I've never heard of it before but I just went to their page and I am instantly met with the first case where it does not fit my requirements. It requires you to buy a commercial license... this is hardly a Boost compatible license. - Michael Marcin