Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

QVM: Quaternions, Vectors, Matrices

boost/qvm/vec_mat_operations.hpp

This header defines all available operations between vectors and matrices.

Synopsis:

#include <boost/qvm/vec_mat_operations.hpp>

namespace boost
{
    namespace qvm
    {
        //Only enabled if:
        //  is_mat<A>::value && is_vec<B>::value &&
        //  mat_traits<A>::cols==vec_traits<B>::dim
        template <class A,class B>
        typename deduce_vec2<A,B,mat_traits<A>::rows>::type
        operator*( A const & a, B const & b );        
        
        //Only enabled if:
        //  is_mat<A>::value && is_vec<B>::value &&
        //  mat_traits<A>::rows==4 && mat_traits<A>::cols==4 &&
        //  vec_traits<B>::dim==3
        template <class A,class B>
        deduce_vec2<A,B,3> >::type
        transform_vector( A const & a, B const & b );        
        
        //Only enabled if:
        //  is_mat<A>::value && is_vec<B>::value &&
        //  mat_traits<A>::rows==4 && mat_traits<A>::cols==4 &&
        //  vec_traits<B>::dim==3
        template <class A,class B>
        deduce_vec2<A,B,3> >::type
        transform_point( A const & a, B const & b );
    }
}