void rot(const T& x,const T& y,const T& z,const T& t) { if( t != T(0) && ( x != T(0) || y != T(0) || z != T(0) ) ) { m_quat *= Quaternion<T>(x,y,z,t); m_cache.invalidate(); m_inv_cache.invalidate(); } }
void rot(const vecn<T,3>& n,const T& t) { if( t != T(0) && ( n.x() != T(0) || n.y() != T(0) || n.z() != T(0) ) ) { //assert(n.length()); m_quat *= Quaternion<T>(n,t); m_cache.invalidate(); m_inv_cache.invalidate(); } }
Quaternion<T>& quat() { m_cache.invalidate(); m_inv_cache.invalidate(); return m_quat; }