
Boost : 
Subject: Re: [boost] Review Request: QVM (generic Quaternion, Vector and Matrix operations library)
From: Andrew Hundt (athundt_at_[hidden])
Date: 20150803 22:56:23
On Mon, May 4, 2015 at 3:06 PM, Emil Dotchevski <emildotchevski_at_[hidden]>
wrote:
> 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/boostqvm/.
>
> 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#PixelIteratorSectionDG
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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk