34 #include "ParaVector3.h" 81 inline explicit Matrix3 (
const float arr[3][3])
83 memcpy(m,arr,9*
sizeof(
float));
87 memcpy(m,rkMatrix.m,9*
sizeof(
float));
90 Matrix3 (
float fEntry00,
float fEntry01,
float fEntry02,
91 float fEntry10,
float fEntry11,
float fEntry12,
92 float fEntry20,
float fEntry21,
float fEntry22)
106 inline float* operator[] (
size_t iRow)
const 108 return (
float*)m[iRow];
114 Vector3 GetColumn (
size_t iCol)
const;
115 void SetColumn(
size_t iCol,
const Vector3& vec);
121 memcpy(m,rkMatrix.m,9*
sizeof(
float));
124 bool operator== (
const Matrix3& rkMatrix)
const;
125 inline bool operator!= (
const Matrix3& rkMatrix)
const 127 return !operator==(rkMatrix);
144 Matrix3 operator* (
float fScalar)
const;
147 friend Matrix3 operator* (
float fScalar,
const Matrix3& rkMatrix);
151 bool Inverse (
Matrix3& rkInverse,
float fTolerance = 1e-06)
const;
152 Matrix3 Inverse (
float fTolerance = 1e-06)
const;
153 float Determinant ()
const;
158 void SingularValueComposition (
const Matrix3& rkL,
162 void Orthonormalize ();
168 float SpectralNorm ()
const;
172 inline void ToAxisAngle (
Vector3& rkAxis,
Degree& rfAngle)
const {
174 ToAxisAngle ( rkAxis, r );
177 void FromAxisAngle (
const Vector3& rkAxis,
const Radian& fRadians);
182 bool ToEulerAnglesXYZ (
Radian& rfYAngle,
Radian& rfPAngle,
184 bool ToEulerAnglesXZY (
Radian& rfYAngle,
Radian& rfPAngle,
186 bool ToEulerAnglesYXZ (
Radian& rfYAngle,
Radian& rfPAngle,
188 bool ToEulerAnglesYZX (
Radian& rfYAngle,
Radian& rfPAngle,
190 bool ToEulerAnglesZXY (
Radian& rfYAngle,
Radian& rfPAngle,
192 bool ToEulerAnglesZYX (
Radian& rfYAngle,
Radian& rfPAngle,
194 void FromEulerAnglesXYZ (
const Radian& fYAngle,
const Radian& fPAngle,
const Radian& fRAngle);
195 void FromEulerAnglesXZY (
const Radian& fYAngle,
const Radian& fPAngle,
const Radian& fRAngle);
196 void FromEulerAnglesYXZ (
const Radian& fYAngle,
const Radian& fPAngle,
const Radian& fRAngle);
197 void FromEulerAnglesYZX (
const Radian& fYAngle,
const Radian& fPAngle,
const Radian& fRAngle);
198 void FromEulerAnglesZXY (
const Radian& fYAngle,
const Radian& fPAngle,
const Radian& fRAngle);
199 void FromEulerAnglesZYX (
const Radian& fYAngle,
const Radian& fPAngle,
const Radian& fRAngle);
201 void EigenSolveSymmetric (
float afEigenvalue[3],
202 Vector3 akEigenvector[3])
const;
204 static void TensorProduct (
const Vector3& rkU,
const Vector3& rkV,
211 float t = m[0][0] * m[0][0] + m[1][0] * m[1][0] + m[2][0] * m[2][0];
214 t = m[0][1] * m[0][1] + m[1][1] * m[1][1] + m[2][1] * m[2][1];
217 t = m[0][2] * m[0][2] + m[1][2] * m[1][2] + m[2][2] * m[2][2];
227 void RotX(
float angle);
233 void RotY(
float angle);
239 void RotZ(
float angle);
241 static const float EPSILON;
247 void Tridiagonal (
float afDiag[3],
float afSubDiag[3]);
248 bool QLAlgorithm (
float afDiag[3],
float afSubDiag[3]);
251 static const float ms_fSvdEpsilon;
252 static const unsigned int ms_iSvdMaxIterations;
259 static float MaxCubicRoot (
float afCoeff[3]);
Wrapper class which indicates a given angle value is in Radians.
Definition: ParaAngle.h:10
different physics engine has different winding order.
Definition: EventBinding.h:32
static bool RealEqual(float a, float b, float tolerance=std::numeric_limits< float >::epsilon())
Compare 2 reals, using tolerance for inaccuracies.
Definition: ParaMath.cpp:307
A 3x3 matrix which can represent rotations around axes.
Definition: ParaMatrix3.h:63
Standard 3-dimensional vector.
Definition: ParaVector3.h:16
Wrapper class which indicates a given angle value is in Degrees.
Definition: ParaAngle.h:56
Class encapsulating a standard 4x4 homogeneous matrix.
Definition: ParaMatrix4.h:23
Matrix3()
Default constructor.
Definition: ParaMatrix3.h:80
bool hasScale() const
Determines if this matrix involves a scaling.
Definition: ParaMatrix3.h:208
void RotY(float angle)
Set a rotation matrix around the Y axis.
Definition: ParaMatrix3.cpp:1502
void RotZ(float angle)
Set a rotation matrix around the Z axis.
Definition: ParaMatrix3.cpp:1508
void RotX(float angle)
Set a rotation matrix around the X axis.
Definition: ParaMatrix3.cpp:1496