...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
#include <boost/qvm/mat_operations.hpp>
namespace qvm { //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols && // is_vec<B>::value && vec_traits<B>::dim==3 template <class A,class B> void rotate( A & a, B const & axis, typename mat_traits<A>::scalar_type angle ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_xzy( A & a, Angle x1, Angle z2, Angle y3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_xyz( A & a, Angle x1, Angle y2, Angle z3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_yxz( A & a, Angle y1, Angle x2, Angle z3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_yzx( A & a, Angle y1, Angle z2, Angle x3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_zyx( A & a, Angle z1, Angle y2, Angle x3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_zxy( A & a, Angle z1, Angle x2, Angle y3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_xzx( A & a, Angle x1, Angle z2, Angle x3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_xyx( A & a, Angle x1, Angle y2, Angle x3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_yxy( A & a, Angle y1, Angle x2, Angle y3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_yzy( A & a, Angle y1, Angle z2, Angle y3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_zyz( A & a, Angle z1, Angle y2, Angle z3 ); //Only enabled if: // is_mat<A>::value && mat_traits<A>::rows>=3 && // mat_traits<A>::rows==mat_traits<A>::cols template <class A,class Angle> void rotate_zxz( A & a, Angle z1, Angle x2, Angle z3 ); }
Multiplies the matrix a in-place by the return value of the corresponding rot_mat function.