Boost logo

Boost :

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
> 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:

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

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 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

Andrew Hundt

Boost list run by bdawes at, gregod at, cpdaniel at, john at