OGRE-Next
2.3
Object-Oriented Graphics Rendering Engine
|
A 3x3 matrix which can represent rotations around axes. More...
#include <OgreMatrix3.h>
Public Member Functions | |
Matrix3 () | |
Default constructor. More... | |
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. More... | |
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. More... | |
bool | Inverse (Matrix3 &rkInverse, Real fTolerance=1e-06) const |
Matrix3 | Inverse (Real fTolerance=1e-06) const |
bool | operator!= (const Matrix3 &rkMatrix) const |
Tests 2 matrices for inequality. More... | |
Matrix3 | operator* (const Matrix3 &rkMatrix) const |
Matrix concatenation using '*'. More... | |
Vector3 | operator* (const Vector3 &rkVector) const |
Matrix * vector [3x3 * 3x1 = 3x1]. More... | |
Matrix3 | operator* (Real fScalar) const |
Matrix * scalar. More... | |
Matrix3 | operator+ (const Matrix3 &rkMatrix) const |
Matrix addition. More... | |
Matrix3 | operator- () const |
Matrix3 | operator- (const Matrix3 &rkMatrix) const |
Matrix subtraction. More... | |
bool | operator== (const Matrix3 &rkMatrix) const |
Tests 2 matrices for equality. More... | |
Real * | operator[] (size_t iRow) |
const Real * | operator[] (size_t iRow) const |
Member access, allows use of construct mat[r][c]. More... | |
void | Orthonormalize () |
Gram-Schmidt orthonormalization (applied to columns of rotation matrix) More... | |
void | QDUDecomposition (Matrix3 &rkQ, Vector3 &rkD, Vector3 &rkU) const |
Orthogonal Q, diagonal D, upper triangular U stored as (u01,u02,u12) More... | |
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. More... | |
Real | SpectralNorm () const |
void | swap (Matrix3 &other) |
Exchange the contents of this matrix with another. More... | |
void | ToAngleAxis (Vector3 &rkAxis, Degree &rfAngle) const |
void | ToAngleAxis (Vector3 &rkAxis, Radian &rfAngle) const |
Note: Matrix must be orthonormal. More... | |
bool | ToEulerAnglesXYZ (Radian &rfYAngle, Radian &rfPAngle, Radian &rfRAngle) const |
The matrix must be orthonormal. More... | |
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 |
Static Public Member Functions | |
static void | TensorProduct (const Vector3 &rkU, const Vector3 &rkV, Matrix3 &rkProduct) |
Static Public Attributes | |
static const Real | EPSILON |
static const Matrix3 | IDENTITY |
static const Matrix3 | ZERO |
Friends | |
class | Matrix4 |
_OgreExport friend Vector3 | operator* (const Vector3 &rkVector, const Matrix3 &rkMatrix) |
Vector * matrix [1x3 * 3x3 = 1x3]. More... | |
_OgreExport friend Matrix3 | operator* (Real fScalar, const Matrix3 &rkMatrix) |
Scalar * matrix. More... | |
_OgreExport friend std::ostream & | operator<< (std::ostream &o, const Matrix3 &mat) |
Function for writing to a stream. More... | |
A 3x3 matrix which can represent rotations around axes.
|
inline |
Default constructor.
|
inlineexplicit |
|
inline |
Real Ogre::Matrix3::Determinant | ( | ) | const |
Eigensolver, matrix must be symmetric.
void Ogre::Matrix3::FromAxes | ( | const Vector3 & | xAxis, |
const Vector3 & | yAxis, | ||
const Vector3 & | zAxis | ||
) |
void Ogre::Matrix3::FromEulerAnglesXYZ | ( | const Radian & | fYAngle, |
const Radian & | fPAngle, | ||
const Radian & | fRAngle | ||
) |
void Ogre::Matrix3::FromEulerAnglesXZY | ( | const Radian & | fYAngle, |
const Radian & | fPAngle, | ||
const Radian & | fRAngle | ||
) |
void Ogre::Matrix3::FromEulerAnglesYXZ | ( | const Radian & | fYAngle, |
const Radian & | fPAngle, | ||
const Radian & | fRAngle | ||
) |
void Ogre::Matrix3::FromEulerAnglesYZX | ( | const Radian & | fYAngle, |
const Radian & | fPAngle, | ||
const Radian & | fRAngle | ||
) |
void Ogre::Matrix3::FromEulerAnglesZXY | ( | const Radian & | fYAngle, |
const Radian & | fPAngle, | ||
const Radian & | fRAngle | ||
) |
void Ogre::Matrix3::FromEulerAnglesZYX | ( | const Radian & | fYAngle, |
const Radian & | fPAngle, | ||
const Radian & | fRAngle | ||
) |
Vector3 Ogre::Matrix3::GetColumn | ( | size_t | iCol | ) | const |
|
inline |
Determines if this matrix involves a scaling.
References Ogre::Math::RealEqual().
|
inline |
Tests 2 matrices for inequality.
References Ogre::operator==().
Matrix * vector [3x3 * 3x1 = 3x1].
Matrix3 Ogre::Matrix3::operator- | ( | ) | const |
bool Ogre::Matrix3::operator== | ( | const Matrix3 & | rkMatrix | ) | const |
Tests 2 matrices for equality.
|
inline |
|
inline |
Member access, allows use of construct mat[r][c].
void Ogre::Matrix3::Orthonormalize | ( | ) |
Gram-Schmidt orthonormalization (applied to columns of rotation matrix)
Orthogonal Q, diagonal D, upper triangular U stored as (u01,u02,u12)
void Ogre::Matrix3::SetColumn | ( | size_t | iCol, |
const Vector3 & | vec | ||
) |
void Ogre::Matrix3::SingularValueComposition | ( | const Matrix3 & | rkL, |
const Vector3 & | rkS, | ||
const Matrix3 & | rkR | ||
) |
void Ogre::Matrix3::SingularValueDecomposition | ( | Matrix3 & | rkL, |
Vector3 & | rkS, | ||
Matrix3 & | rkR | ||
) | const |
Singular value decomposition.
Real Ogre::Matrix3::SpectralNorm | ( | ) | const |
|
inline |
Exchange the contents of this matrix with another.
References std::swap().
|
static |
Note: Matrix must be orthonormal.
bool Ogre::Matrix3::ToEulerAnglesXYZ | ( | Radian & | rfYAngle, |
Radian & | rfPAngle, | ||
Radian & | rfRAngle | ||
) | const |
The matrix must be orthonormal.
The decomposition is yaw*pitch*roll where yaw is rotation about the Up vector, pitch is rotation about the Right axis, and roll is rotation about the Direction axis.
bool Ogre::Matrix3::ToEulerAnglesXZY | ( | Radian & | rfYAngle, |
Radian & | rfPAngle, | ||
Radian & | rfRAngle | ||
) | const |
bool Ogre::Matrix3::ToEulerAnglesYXZ | ( | Radian & | rfYAngle, |
Radian & | rfPAngle, | ||
Radian & | rfRAngle | ||
) | const |
bool Ogre::Matrix3::ToEulerAnglesYZX | ( | Radian & | rfYAngle, |
Radian & | rfPAngle, | ||
Radian & | rfRAngle | ||
) | const |
bool Ogre::Matrix3::ToEulerAnglesZXY | ( | Radian & | rfYAngle, |
Radian & | rfPAngle, | ||
Radian & | rfRAngle | ||
) | const |
bool Ogre::Matrix3::ToEulerAnglesZYX | ( | Radian & | rfYAngle, |
Radian & | rfPAngle, | ||
Radian & | rfRAngle | ||
) | const |
Matrix3 Ogre::Matrix3::Transpose | ( | ) | const |
|
friend |
Vector * matrix [1x3 * 3x3 = 1x3].
Scalar * matrix.
|
friend |
Function for writing to a stream.
|
static |
|
static |
|
static |