Subject: Re: [boost] Review Request: QVM (generic Quaternion, Vector and Matrix operations library)
From: Andrew Hundt (athundt_at_[hidden])
Date: 2015-08-03 22:56:23
On Mon, May 4, 2015 at 3:06 PM, Emil Dotchevski <emildotchevski_at_[hidden]>
> 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.
> Emil Dotchevski
> Unsubscribe & other changes:
I was looking at qvm again and I came up with a few additional questions
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
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
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
- 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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk