On Mon, May 4, 2015 at 3:06 PM, Emil Dotchevski
Boost QVM defines a set of generic functions and operator overloads for working with quaternions, vectors and matrices of static size. The library also defines vector and matrix data types, however it allows users to introduce their own types by specializing the q_traits, v_traits and m_traits templates.
Online documentation and a link to download the source code under the Boost license is available at http://www.revergestudios.com/boost-qvm/.
I would like to thank Adam Wulkiewicz for volunteering to be the review manager for QVM and for his valuable initial feedback.
Thanks, Emil Dotchevski
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
I was looking at qvm again and I came up with a few additional questions and thoughts: Is it possible to specialize operations to use the underlying library's implementation at no (or minimal) performance cost? For example, if both matrices in a multiplication are eigen matrices, can the eigen * operator be used by the Boost.QVM function call internally? - Are there STL iterator adaptors? (might have missed them) - Could integration with the basic QVM types for some of the most popular libraries be included (uBLAS, eigen, armadillo, QMatrix, etc)? - Have you considered Cube support? (see armadillo for example/explanation http://arma.sourceforge.net/) Cubes are a useful alternative to something like a vector of 4x4 homogenous transforms, particularly when combined with 2d views of the 3d object, or when you have a number of different matrices with different underlying data and the same dimensions. For example 3 matrices that hold R,G,B values of an image, or a dense volumetric representation of the world. - perhaps a scalar iterator in addition to views? Equivalent to the pixel iterator in gil http://www.boost.org/doc/libs/1_58_0/libs/gil/doc/html/gildesignguide.html#P... views may simply be superior, however. Examples that would be useful: - Basic example that does something interesting, see boost.geometry's examples for ideas - Basic example converting between two different underlying library's types and performing an operation on them - One liner examples for each of the basic functions, see http://en.cppreference.com/w/cpp/algorithm/copy for an idea of what I mean - Tutorial on how to implement your own generic algorithm with the library with best practices, perhaps SVD - How to integrate an algorithm provided by a 3rd party library, such Eigen's SVD implementation http://eigen.tuxfamily.org/dox/group__SVD__Module.html - How to extend QVM with a new type, for example, dual quaternions or the various geometric types that exist in conformal geometric algebra, such as in versor http://versor.mat.ucsb.edu/#basics Cheers! Andrew Hundt