|  | 
|  | Matrix3 () | 
|  | Default constructor. 
 | 
|  | 
|  | Matrix3 (const Real arr[3][3]) | 
|  | 
|  | Matrix3 (Real fEntry00, Real fEntry01, Real fEntry02, Real fEntry10, Real fEntry11, Real fEntry12, Real fEntry20, Real fEntry21, Real fEntry22) | 
|  | 
| Real | Determinant () const | 
|  | 
| void | EigenSolveSymmetric (Real afEigenvalue[3], Vector3 akEigenvector[3]) const | 
|  | Eigensolver, matrix must be symmetric. 
 | 
|  | 
| void | FromAngleAxis (const Vector3 &rkAxis, const Radian &fRadians) | 
|  | 
| void | FromAxes (const Vector3 &xAxis, const Vector3 &yAxis, const Vector3 &zAxis) | 
|  | 
| void | FromEulerAnglesXYZ (const Radian &fYAngle, const Radian &fPAngle, const Radian &fRAngle) | 
|  | 
| void | FromEulerAnglesXZY (const Radian &fYAngle, const Radian &fPAngle, const Radian &fRAngle) | 
|  | 
| void | FromEulerAnglesYXZ (const Radian &fYAngle, const Radian &fPAngle, const Radian &fRAngle) | 
|  | 
| void | FromEulerAnglesYZX (const Radian &fYAngle, const Radian &fPAngle, const Radian &fRAngle) | 
|  | 
| void | FromEulerAnglesZXY (const Radian &fYAngle, const Radian &fPAngle, const Radian &fRAngle) | 
|  | 
| void | FromEulerAnglesZYX (const Radian &fYAngle, const Radian &fPAngle, const Radian &fRAngle) | 
|  | 
| Vector3 | GetColumn (size_t iCol) const | 
|  | 
| bool | hasScale () const | 
|  | Determines if this matrix involves a scaling. 
 | 
|  | 
| bool | Inverse (Matrix3 &rkInverse, Real fTolerance=Real(1e-06)) const | 
|  | 
| Matrix3 | Inverse (Real fTolerance=Real(1e-06)) const | 
|  | 
| bool | operator!= (const Matrix3 &rkMatrix) const | 
|  | Tests 2 matrices for inequality. 
 | 
|  | 
| Matrix3 | operator* (const Matrix3 &rkMatrix) const | 
|  | Matrix concatenation using '*'. 
 | 
|  | 
| Vector3 | operator* (const Vector3 &rkVector) const | 
|  | Matrix * vector [3x3 * 3x1 = 3x1]. 
 | 
|  | 
| Matrix3 | operator* (Real fScalar) const | 
|  | Matrix * scalar. 
 | 
|  | 
| Matrix3 | operator+ (const Matrix3 &rkMatrix) const | 
|  | Matrix addition. 
 | 
|  | 
| Matrix3 | operator- () const | 
|  | 
| Matrix3 | operator- (const Matrix3 &rkMatrix) const | 
|  | Matrix subtraction. 
 | 
|  | 
| bool | operator== (const Matrix3 &rkMatrix) const | 
|  | Tests 2 matrices for equality. 
 | 
|  | 
| Real * | operator[] (size_t iRow) | 
|  | 
| const Real * | operator[] (size_t iRow) const | 
|  | Member access, allows use of construct mat[r][c]. 
 | 
|  | 
| void | Orthonormalize () | 
|  | Gram-Schmidt orthonormalization (applied to columns of rotation matrix) 
 | 
|  | 
| void | QDUDecomposition (Matrix3 &rkQ, Vector3 &rkD, Vector3 &rkU) const | 
|  | Orthogonal Q, diagonal D, upper triangular U stored as (u01,u02,u12) 
 | 
|  | 
| void | SetColumn (size_t iCol, const Vector3 &vec) | 
|  | 
| void | SingularValueComposition (const Matrix3 &rkL, const Vector3 &rkS, const Matrix3 &rkR) | 
|  | 
| void | SingularValueDecomposition (Matrix3 &rkL, Vector3 &rkS, Matrix3 &rkR) const | 
|  | Singular value decomposition. 
 | 
|  | 
| Real | SpectralNorm () const | 
|  | 
| void | swap (Matrix3 &other) | 
|  | Exchange the contents of this matrix with another. 
 | 
|  | 
| void | ToAngleAxis (Vector3 &rkAxis, Degree &rfAngle) const | 
|  | 
| void | ToAngleAxis (Vector3 &rkAxis, Radian &rfAngle) const | 
|  | Note: Matrix must be orthonormal. 
 | 
|  | 
| bool | ToEulerAnglesXYZ (Radian &rfYAngle, Radian &rfPAngle, Radian &rfRAngle) const | 
|  | The matrix must be orthonormal. 
 | 
|  | 
| bool | ToEulerAnglesXZY (Radian &rfYAngle, Radian &rfPAngle, Radian &rfRAngle) const | 
|  | 
| bool | ToEulerAnglesYXZ (Radian &rfYAngle, Radian &rfPAngle, Radian &rfRAngle) const | 
|  | 
| bool | ToEulerAnglesYZX (Radian &rfYAngle, Radian &rfPAngle, Radian &rfRAngle) const | 
|  | 
| bool | ToEulerAnglesZXY (Radian &rfYAngle, Radian &rfPAngle, Radian &rfRAngle) const | 
|  | 
| bool | ToEulerAnglesZYX (Radian &rfYAngle, Radian &rfPAngle, Radian &rfRAngle) const | 
|  | 
| Matrix3 | Transpose () const | 
|  | 
A 3x3 matrix which can represent rotations around axes. 
- Note
- All the code is adapted from the Wild Magic 0.2 Matrix library (http://www.geometrictools.com/). 
- The coordinate system is assumed to be right-handed.