vecn<3, COMP_T>::vecn(vecn<3, OTHER_COMP_T> const& rhs) { set( static_cast<COMP_T>(rhs.x()), static_cast<COMP_T>(rhs.y()), static_cast<COMP_T>(rhs.z()) ); }
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(); } }
veca<T,3> inv_rot_vec(const vecn<T,3>& v) const { veca<T,3> qres( m_quat * Quaternion<T>(v.x(),v.y(),v.z(),T(0)) * m_quat.conjugated() ); return qres; }