OGRE 14.2
Object-Oriented Graphics Rendering Engine
Loading...
Searching...
No Matches
Ogre::Matrix3 Class Reference

A 3x3 matrix which can represent rotations around axes. More...

#include <OgreMatrix3.h>

Public Member Functions

 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
 
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)
 
Vector3 GetColumn (size_t iCol) const
 
bool hasNegativeScale () const
 Determines if this matrix involves a negative scaling.
 
bool hasScale () const
 Determines if this matrix involves a scaling.
 
Matrix3 inverse () const
 
bool Inverse (Matrix3 &rkInverse, Real fTolerance=1e-06f) const
 
Matrix3 Inverse (Real fTolerance=1e-06f) const
 
bool operator!= (const Matrix3 &rkMatrix) const
 Tests 2 matrices for inequality.
 
Matrix3 operator* (const Matrix3 &rkMatrix) const
 Matrix concatenation using '*'.
 
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.
 
Realoperator[] (size_t iRow)
 
const Realoperator[] (size_t iRow) const
 Member access, allows use of construct mat[r][c].
 
Matrix3 orthonormalised () const
 Gram-Schmidt orthogonalisation (applied to columns of rotation matrix)
 
void Orthonormalize ()
 
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 ToAngleAxis (Vector3 &rkAxis, Degree &rfAngle) const
 
void ToAngleAxis (Vector3 &rkAxis, Radian &rfAngle) const
 Note: Matrix must be orthonormal.
 
Matrix3 Transpose () const
 
Matrix3 transpose () const
 
Euler angle conversions

(De-)composes the matrix in/ from yaw, pitch and roll angles, where yaw is rotation about the Y vector, pitch is rotation about the X axis, and roll is rotation about the Z axis.

The function suffix indicates the (de-)composition order; e.g. with the YXZ variants the matrix will be (de-)composed as yaw*pitch*roll

For ToEulerAngles*, the return value denotes whether the solution is unique.

Note
The matrix to be decomposed must be orthonormal.
bool ToEulerAnglesXYZ (Radian &rfYAngle, Radian &rfPAngle, Radian &rfRAngle) const
 
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
 
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)
 

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
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ Matrix3() [1/3]

Ogre::Matrix3::Matrix3 ( )
inline

Default constructor.

Note
It does NOT initialize the matrix for efficiency.

◆ Matrix3() [2/3]

Ogre::Matrix3::Matrix3 ( const Real arr[3][3])
inlineexplicit

◆ Matrix3() [3/3]

Ogre::Matrix3::Matrix3 ( Real fEntry00,
Real fEntry01,
Real fEntry02,
Real fEntry10,
Real fEntry11,
Real fEntry12,
Real fEntry20,
Real fEntry21,
Real fEntry22 )
inline

Member Function Documentation

◆ operator[]() [1/2]

const Real * Ogre::Matrix3::operator[] ( size_t iRow) const
inline

Member access, allows use of construct mat[r][c].

◆ operator[]() [2/2]

Real * Ogre::Matrix3::operator[] ( size_t iRow)
inline

◆ GetColumn()

Vector3 Ogre::Matrix3::GetColumn ( size_t iCol) const
inline

◆ SetColumn()

void Ogre::Matrix3::SetColumn ( size_t iCol,
const Vector3 & vec )
inline

◆ FromAxes()

void Ogre::Matrix3::FromAxes ( const Vector3 & xAxis,
const Vector3 & yAxis,
const Vector3 & zAxis )
inline

◆ operator==()

bool Ogre::Matrix3::operator== ( const Matrix3 & rkMatrix) const

Tests 2 matrices for equality.

◆ operator!=()

bool Ogre::Matrix3::operator!= ( const Matrix3 & rkMatrix) const
inline

Tests 2 matrices for inequality.

References Ogre::operator==().

◆ operator+()

Matrix3 Ogre::Matrix3::operator+ ( const Matrix3 & rkMatrix) const

Matrix addition.

◆ operator-() [1/2]

Matrix3 Ogre::Matrix3::operator- ( const Matrix3 & rkMatrix) const

Matrix subtraction.

◆ operator*() [1/2]

Matrix3 Ogre::Matrix3::operator* ( const Matrix3 & rkMatrix) const

Matrix concatenation using '*'.

◆ operator-() [2/2]

Matrix3 Ogre::Matrix3::operator- ( ) const

◆ operator*() [2/2]

Matrix3 Ogre::Matrix3::operator* ( Real fScalar) const

Matrix * scalar.

◆ Transpose()

Matrix3 Ogre::Matrix3::Transpose ( ) const

◆ Inverse() [1/2]

bool Ogre::Matrix3::Inverse ( Matrix3 & rkInverse,
Real fTolerance = 1e-06f ) const

◆ Inverse() [2/2]

Matrix3 Ogre::Matrix3::Inverse ( Real fTolerance = 1e-06f) const

◆ Determinant()

Real Ogre::Matrix3::Determinant ( ) const
inline

◆ transpose()

Matrix3 Ogre::Matrix3::transpose ( ) const
inline

◆ inverse()

Matrix3 Ogre::Matrix3::inverse ( ) const
inline

◆ determinant()

Real Ogre::Matrix3::determinant ( ) const
inline

◆ hasNegativeScale()

bool Ogre::Matrix3::hasNegativeScale ( ) const
inline

Determines if this matrix involves a negative scaling.

◆ SingularValueDecomposition()

void Ogre::Matrix3::SingularValueDecomposition ( Matrix3 & rkL,
Vector3 & rkS,
Matrix3 & rkR ) const

Singular value decomposition.

◆ SingularValueComposition()

void Ogre::Matrix3::SingularValueComposition ( const Matrix3 & rkL,
const Vector3 & rkS,
const Matrix3 & rkR )

◆ orthonormalised()

Matrix3 Ogre::Matrix3::orthonormalised ( ) const
inline

Gram-Schmidt orthogonalisation (applied to columns of rotation matrix)

◆ Orthonormalize()

void Ogre::Matrix3::Orthonormalize ( )
inline

◆ QDUDecomposition()

void Ogre::Matrix3::QDUDecomposition ( Matrix3 & rkQ,
Vector3 & rkD,
Vector3 & rkU ) const

Orthogonal Q, diagonal D, upper triangular U stored as (u01,u02,u12)

◆ SpectralNorm()

Real Ogre::Matrix3::SpectralNorm ( ) const

◆ ToAngleAxis() [1/2]

void Ogre::Matrix3::ToAngleAxis ( Vector3 & rkAxis,
Radian & rfAngle ) const

Note: Matrix must be orthonormal.

◆ ToAngleAxis() [2/2]

void Ogre::Matrix3::ToAngleAxis ( Vector3 & rkAxis,
Degree & rfAngle ) const
inline

◆ FromAngleAxis()

void Ogre::Matrix3::FromAngleAxis ( const Vector3 & rkAxis,
const Radian & fRadians )

◆ ToEulerAnglesXYZ()

bool Ogre::Matrix3::ToEulerAnglesXYZ ( Radian & rfYAngle,
Radian & rfPAngle,
Radian & rfRAngle ) const

◆ ToEulerAnglesXZY()

bool Ogre::Matrix3::ToEulerAnglesXZY ( Radian & rfYAngle,
Radian & rfPAngle,
Radian & rfRAngle ) const

◆ ToEulerAnglesYXZ()

bool Ogre::Matrix3::ToEulerAnglesYXZ ( Radian & rfYAngle,
Radian & rfPAngle,
Radian & rfRAngle ) const

◆ ToEulerAnglesYZX()

bool Ogre::Matrix3::ToEulerAnglesYZX ( Radian & rfYAngle,
Radian & rfPAngle,
Radian & rfRAngle ) const

◆ ToEulerAnglesZXY()

bool Ogre::Matrix3::ToEulerAnglesZXY ( Radian & rfYAngle,
Radian & rfPAngle,
Radian & rfRAngle ) const

◆ ToEulerAnglesZYX()

bool Ogre::Matrix3::ToEulerAnglesZYX ( Radian & rfYAngle,
Radian & rfPAngle,
Radian & rfRAngle ) const

◆ FromEulerAnglesXYZ()

void Ogre::Matrix3::FromEulerAnglesXYZ ( const Radian & fYAngle,
const Radian & fPAngle,
const Radian & fRAngle )

◆ FromEulerAnglesXZY()

void Ogre::Matrix3::FromEulerAnglesXZY ( const Radian & fYAngle,
const Radian & fPAngle,
const Radian & fRAngle )

◆ FromEulerAnglesYXZ()

void Ogre::Matrix3::FromEulerAnglesYXZ ( const Radian & fYAngle,
const Radian & fPAngle,
const Radian & fRAngle )

◆ FromEulerAnglesYZX()

void Ogre::Matrix3::FromEulerAnglesYZX ( const Radian & fYAngle,
const Radian & fPAngle,
const Radian & fRAngle )

◆ FromEulerAnglesZXY()

void Ogre::Matrix3::FromEulerAnglesZXY ( const Radian & fYAngle,
const Radian & fPAngle,
const Radian & fRAngle )

◆ FromEulerAnglesZYX()

void Ogre::Matrix3::FromEulerAnglesZYX ( const Radian & fYAngle,
const Radian & fPAngle,
const Radian & fRAngle )

◆ EigenSolveSymmetric()

void Ogre::Matrix3::EigenSolveSymmetric ( Real afEigenvalue[3],
Vector3 akEigenvector[3] ) const

Eigensolver, matrix must be symmetric.

◆ TensorProduct()

static void Ogre::Matrix3::TensorProduct ( const Vector3 & rkU,
const Vector3 & rkV,
Matrix3 & rkProduct )
static

◆ hasScale()

bool Ogre::Matrix3::hasScale ( ) const
inline

Determines if this matrix involves a scaling.

References Ogre::Math::RealEqual().

Member Data Documentation

◆ EPSILON

const Real Ogre::Matrix3::EPSILON
static

◆ ZERO

const Matrix3 Ogre::Matrix3::ZERO
static

◆ IDENTITY

const Matrix3 Ogre::Matrix3::IDENTITY
static

The documentation for this class was generated from the following file: