Subject: Re: [boost] Review Request: QVM (generic Quaternion, Vector and Matrix operations library)
From: Emil Dotchevski (emil_at_[hidden])
Date: 2015-05-07 15:49:26


On Thu, May 7, 2015 at 5:55 AM, David Bellot <david.bellot_at_[hidden]> wrote:

> >
> > Me: Just #include this and use types called floatvec2 and floatmat2x2
> > and + and * just work.
> >
>
> ​my cosmetic and artistic opinion about that:
> ​
> ​with ublas, you can do that:​
>
> ​#include <boost/
> ​numeric/ublas/matrix.hpp>
>
> // this is not needed but it's useful to have them
> ​#include <boost/
> ​numeric/ublas/io.hpp>
> ​#include <boost/
> ​numeric/ublas/assignment.hpp>
>
> ​int main()
> {
> fixed_matrix<double,3,3> m1;
>
> m1 <<= 1,2,3
> 4,5,6,
> 7,8,9;
>
> cout << m1 << endl;
> }
>
> And personally, I find fixed_matrix<double,3,3> to be easier to remember
> and more explicit to use than floatvec2 or dblmat2x2 or whatever else. And
> I don't have to look into the doc, if I can't remember if the matrix name
> was DblMat2x2 or double_mat2_2... or Matrix2D ? (no, it's not the same
> library).
>

Perhaps I'm missing something in the ublas design -- please someone correct
me if I'm wrong that in ublas operator overloads (e.g. matrix
multiplication) are defined as members of various ublas types that have
matrix semantics. QVM uses a different approach: it defines *only*
namespace-scope operator overloads that then work on any type with matrix
semantics.

So yes, you might or might not prefer fixed_matrix<double,3,3> to double33
or dblmat3x3 -- QVM is neutral to such preferences. It just gives you the
relevant operations for whatever types you might have on your hands.

Thanks,
Emil