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

rotate(quat,vec,scalar)

#include <boost/qvm/quat_operations.hpp>

namespace qvm
{
    //Only enabled if:
    //  is_quat<A>::value &&
    //  is_vec<B>::value && vec_traits<B>::dim==3
    template <class A,class B>
    void rotate( A & a, B const & axis, typename quat_traits<A>::scalar_type angle );
}

Effects:

As if:

a *= rot_quat(axis,angle);