47 #ifndef AI_QUATERNION_H_INC
48 #define AI_QUATERNION_H_INC
53 # pragma GCC system_header
58 template <
typename TReal>
class aiVector3t;
59 template <
typename TReal>
class aiMatrix3x3t;
63 template <
typename TReal>
67 aiQuaterniont() AI_NO_EXCEPT : w(1.0), x(), y(), z() {}
68 aiQuaterniont(TReal pw, TReal px, TReal py, TReal pz)
69 : w(pw), x(px), y(py), z(pz) {}
72 explicit aiQuaterniont(
const aiMatrix3x3t<TReal>& pRotMatrix);
75 aiQuaterniont( TReal rotx, TReal roty, TReal rotz);
78 aiQuaterniont( aiVector3t<TReal> axis, TReal angle);
81 explicit aiQuaterniont( aiVector3t<TReal> normalized);
84 aiMatrix3x3t<TReal> GetMatrix()
const;
88 bool operator== (
const aiQuaterniont& o)
const;
89 bool operator!= (
const aiQuaterniont& o)
const;
91 bool Equal(
const aiQuaterniont& o, TReal epsilon = 1e-6)
const;
96 aiQuaterniont& Normalize();
99 aiQuaterniont& Conjugate ();
102 aiVector3t<TReal> Rotate (
const aiVector3t<TReal>& in)
const;
105 aiQuaterniont operator* (
const aiQuaterniont& two)
const;
115 static void Interpolate( aiQuaterniont& pOut,
const aiQuaterniont& pStart,
116 const aiQuaterniont& pEnd, TReal pFactor);
134 #endif // AI_QUATERNION_H_INC