48 #ifndef AI_MATRIX3X3_H_INC
49 #define AI_MATRIX3X3_H_INC
52 # pragma GCC system_header
59 template <
typename T>
class aiMatrix4x4t;
60 template <
typename T>
class aiVector2t;
61 template <
typename T>
class aiVector3t;
72 template <
typename TReal>
75 aiMatrix3x3t() AI_NO_EXCEPT :
76 a1(static_cast<TReal>(1.0f)), a2(), a3(),
77 b1(), b2(static_cast<TReal>(1.0f)), b3(),
78 c1(), c2(), c3(static_cast<TReal>(1.0f)) {}
80 aiMatrix3x3t ( TReal _a1, TReal _a2, TReal _a3,
81 TReal _b1, TReal _b2, TReal _b3,
82 TReal _c1, TReal _c2, TReal _c3) :
83 a1(_a1), a2(_a2), a3(_a3),
84 b1(_b1), b2(_b2), b3(_b3),
85 c1(_c1), c2(_c2), c3(_c3)
89 aiMatrix3x3t& operator *= (
const aiMatrix3x3t& m);
90 aiMatrix3x3t operator * (
const aiMatrix3x3t& m)
const;
93 TReal* operator[] (
unsigned int p_iIndex);
94 const TReal* operator[] (
unsigned int p_iIndex)
const;
97 bool operator== (
const aiMatrix3x3t<TReal>& m)
const;
98 bool operator!= (
const aiMatrix3x3t<TReal>& m)
const;
100 bool Equal(
const aiMatrix3x3t<TReal>& m, TReal epsilon = 1e-6)
const;
102 template <
typename TOther>
103 operator aiMatrix3x3t<TOther> ()
const;
109 explicit aiMatrix3x3t(
const aiMatrix4x4t<TReal>& pMatrix);
114 aiMatrix3x3t& Transpose();
121 aiMatrix3x3t& Inverse();
122 TReal Determinant()
const;
130 static aiMatrix3x3t& RotationZ(TReal a, aiMatrix3x3t& out);
140 static aiMatrix3x3t& Rotation( TReal a,
const aiVector3t<TReal>& axis, aiMatrix3x3t& out);
148 static aiMatrix3x3t& Translation(
const aiVector2t<TReal>& v, aiMatrix3x3t& out);
159 static aiMatrix3x3t& FromToMatrix(
const aiVector3t<TReal>& from,
160 const aiVector3t<TReal>& to, aiMatrix3x3t& out);
178 #endif // __cplusplus
180 #endif // AI_MATRIX3X3_H_INC