Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages

# Ogre::Matrix3 Class Reference

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

`#include <OgreMatrix3.h>`

List of all members.

## Public Methods

| Matrix3 ()
| Default constructor.
| Matrix3 (const Real arr[3][3])
| Matrix3 (const Matrix3 &rkMatrix)
| Matrix3 (Real fEntry00, Real fEntry01, Real fEntry02, Real fEntry10, Real fEntry11, Real fEntry12, Real fEntry20, Real fEntry21, Real fEntry22)
Real * | operator[] (size_t iRow) const
Vector3 | GetColumn (size_t iCol) const
void | SetColumn (size_t iCol, const Vector3 &vec)
void | FromAxes (const Vector3 &xAxis, const Vector3 &yAxis, const Vector3 &zAxis)
Matrix3 & | operator= (const Matrix3 &rkMatrix)
bool | operator== (const Matrix3 &rkMatrix) const
bool | operator!= (const Matrix3 &rkMatrix) const
Matrix3 | operator+ (const Matrix3 &rkMatrix) const
Matrix3 | operator- (const Matrix3 &rkMatrix) const
Matrix3 | operator * (const Matrix3 &rkMatrix) const
Matrix3 | operator- () const
Vector3 | operator * (const Vector3 &rkVector) const
Matrix3 | operator * (Real fScalar) const
Matrix3 | Transpose () const
bool | Inverse (Matrix3 &rkInverse, Real fTolerance=1e-06) const
Matrix3 | Inverse (Real fTolerance=1e-06) const
Real | Determinant () const
void | SingularValueDecomposition (Matrix3 &rkL, Vector3 &rkS, Matrix3 &rkR) const
void | SingularValueComposition (const Matrix3 &rkL, const Vector3 &rkS, const Matrix3 &rkR)
void | Orthonormalize ()
void | QDUDecomposition (Matrix3 &rkQ, Vector3 &rkD, Vector3 &rkU) const
Real | SpectralNorm () const
void | ToAxisAngle (Vector3 &rkAxis, Radian &rfAngle) const
void | ToAxisAngle (Vector3 &rkAxis, Degree &rfAngle) const
void | FromAxisAngle (const Vector3 &rkAxis, const Radian &fRadians)
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)
void | EigenSolveSymmetric (Real afEigenvalue[3], Vector3 akEigenvector[3]) const

## Static Public Methods

void | TensorProduct (const Vector3 &rkU, const Vector3 &rkV, Matrix3 &rkProduct)

## Static Public Attributes

const Real | EPSILON = 1e-06
const Matrix3 | ZERO
const Matrix3 | IDENTITY

## Protected Methods

void | Tridiagonal (Real afDiag[3], Real afSubDiag[3])
bool | QLAlgorithm (Real afDiag[3], Real afSubDiag[3])

## Static Protected Methods

void | Bidiagonalize (Matrix3 &kA, Matrix3 &kL, Matrix3 &kR)
void | GolubKahanStep (Matrix3 &kA, Matrix3 &kL, Matrix3 &kR)
Real | MaxCubicRoot (Real afCoeff[3])

## Protected Attributes

Real | m [3][3]

## Static Protected Attributes

const Real | ms_fSvdEpsilon = 1e-04
const unsigned int | ms_iSvdMaxIterations = 32

## Friends

class | Matrix4
_OgreExport friend Vector3 | operator * (const Vector3 &rkVector, const Matrix3 &rkMatrix)
_OgreExport friend Matrix3 | operator * (Real fScalar, const Matrix3 &rkMatrix)

## 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.magic-software.com).

  The coordinate system is assumed to be right-handed.

Definition at line 59 of file OgreMatrix3.h.

## Constructor & Destructor Documentation

Ogre::Matrix3::Matrix3 | ( |  | ) |

Default constructor.

Note:
  It does NOT initialize the matrix for efficiency.

Definition at line 66 of file OgreMatrix3.h.

Ogre::Matrix3::Matrix3 | ( | const Real | arr[3][3] | ) | `[explicit]`

| Definition at line 67 of file OgreMatrix3.h. References Ogre::Real.

Ogre::Matrix3::Matrix3 | ( | const Matrix3 & | rkMatrix | ) |

| Definition at line 71 of file OgreMatrix3.h. References m, and Ogre::Real.

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

| Definition at line 75 of file OgreMatrix3.h. References Ogre::Real.

## Member Function Documentation

void Ogre::Matrix3::Bidiagonalize | ( | Matrix3 & | kA,
|  | Matrix3 & | kL,
|  | Matrix3 & | kR
| ) | `[static, protected]`

| Definition at line 260 of file OgreMatrix3.cpp. References Ogre::Real. Referenced by SingularValueDecomposition().

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

| Definition at line 243 of file OgreMatrix3.cpp. References m, and Ogre::Real.

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

| Definition at line 1472 of file OgreMatrix3.cpp. References Ogre::Vector3::crossProduct(), Ogre::Vector3::dotProduct(), QLAlgorithm(), Ogre::Real, and Tridiagonal().

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

| Definition at line 57 of file OgreMatrix3.cpp. References SetColumn(). Referenced by Ogre::MeshManager::createCurvedIllusionPlane(), Ogre::MeshManager::createCurvedPlane(), and Ogre::MeshManager::createPlane().

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

| Definition at line 977 of file OgreMatrix3.cpp. References m, Ogre::Real, Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.

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

| Definition at line 1213 of file OgreMatrix3.cpp. References Ogre::Real. Referenced by Ogre::Overlay::updateTransform().

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

| Definition at line 1233 of file OgreMatrix3.cpp. References Ogre::Real.

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

| Definition at line 1253 of file OgreMatrix3.cpp. References Ogre::Real.

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

| Definition at line 1273 of file OgreMatrix3.cpp. References Ogre::Real.

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

| Definition at line 1293 of file OgreMatrix3.cpp. References Ogre::Real.

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

| Definition at line 1313 of file OgreMatrix3.cpp. References Ogre::Real.

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

| Definition at line 41 of file OgreMatrix3.cpp. References m. Referenced by Ogre::Frustum::updateView().

void Ogre::Matrix3::GolubKahanStep | ( | Matrix3 & | kA,
|  | Matrix3 & | kL,
|  | Matrix3 & | kR
| ) | `[static, protected]`

| Definition at line 375 of file OgreMatrix3.cpp. References Ogre::Real. Referenced by SingularValueDecomposition().

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

| Definition at line 236 of file OgreMatrix3.cpp. References Inverse(), and Ogre::Real.

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

| Definition at line 194 of file OgreMatrix3.cpp. References m, and Ogre::Real. Referenced by Inverse().

Real Ogre::Matrix3::MaxCubicRoot | ( | Real | afCoeff[3] | ) | `[static, protected]`

| Definition at line 795 of file OgreMatrix3.cpp. References Ogre::Real. Referenced by SpectralNorm().

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

| Definition at line 161 of file OgreMatrix3.cpp. References m, and Ogre::Real.

Vector3 Ogre::Matrix3::operator * | ( | const Vector3 & | rkVector | ) | const

| Definition at line 124 of file OgreMatrix3.cpp. References m.

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

| Definition at line 108 of file OgreMatrix3.cpp. References m.

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

| Definition at line 110 of file OgreMatrix3.h. References Ogre::operator==().

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

| Definition at line 80 of file OgreMatrix3.cpp. References m.

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

| Definition at line 150 of file OgreMatrix3.cpp. References m.

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

| Definition at line 94 of file OgreMatrix3.cpp. References m.

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

| Definition at line 104 of file OgreMatrix3.h. References m, and Ogre::Real.

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

| Definition at line 66 of file OgreMatrix3.cpp. References m.

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

| Definition at line 91 of file OgreMatrix3.h. References Ogre::Real.

void Ogre::Matrix3::Orthonormalize | ( |  | ) |

| Definition at line 628 of file OgreMatrix3.cpp. References m, and Ogre::Real.

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

| Definition at line 691 of file OgreMatrix3.cpp. References m, and Ogre::Real.

bool Ogre::Matrix3::QLAlgorithm | ( | Real | afDiag[3],
|  | Real | afSubDiag[3]
| ) | `[protected]`

| Definition at line 1391 of file OgreMatrix3.cpp. References m, and Ogre::Real. Referenced by EigenSolveSymmetric().

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

| Definition at line 48 of file OgreMatrix3.cpp. References m, Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z. Referenced by FromAxes().

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

| Definition at line 603 of file OgreMatrix3.cpp. References m.

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

| Definition at line 480 of file OgreMatrix3.cpp. References Bidiagonalize(), GolubKahanStep(), ms_fSvdEpsilon, ms_iSvdMaxIterations, and Ogre::Real.

Real Ogre::Matrix3::SpectralNorm | ( |  | ) | const

| Definition at line 839 of file OgreMatrix3.cpp. References m, MaxCubicRoot(), and Ogre::Real.

void Ogre::Matrix3::TensorProduct | ( | const Vector3 & | rkU,
|  | const Vector3 & | rkV,
|  | Matrix3 & | rkProduct
| ) | `[static]`

| Definition at line 1498 of file OgreMatrix3.cpp.

void Ogre::Matrix3::ToAxisAngle | ( | Vector3 & | rkAxis,
|  | Degree & | rfAngle
| ) | const

| Definition at line 157 of file OgreMatrix3.h.

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

| Definition at line 880 of file OgreMatrix3.cpp. References m, Ogre::Vector3::normalise(), Ogre::Real, Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.

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

| Definition at line 1003 of file OgreMatrix3.cpp. References m.

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

| Definition at line 1038 of file OgreMatrix3.cpp. References m.

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

| Definition at line 1073 of file OgreMatrix3.cpp. References m.

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

| Definition at line 1108 of file OgreMatrix3.cpp. References m.

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

| Definition at line 1143 of file OgreMatrix3.cpp. References m.

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

| Definition at line 1178 of file OgreMatrix3.cpp. References m.

Matrix3 Ogre::Matrix3::Transpose | ( |  | ) | const

| Definition at line 183 of file OgreMatrix3.cpp. References m. Referenced by Ogre::Frustum::updateView().

void Ogre::Matrix3::Tridiagonal | ( | Real | afDiag[3],
|  | Real | afSubDiag[3]
| ) | `[protected]`

| Definition at line 1333 of file OgreMatrix3.cpp. References EPSILON, m, and Ogre::Real. Referenced by EigenSolveSymmetric().

## Friends And Related Function Documentation

friend class Matrix4`[friend]`

| Definition at line 299 of file OgreMatrix3.h.

_OgreExport friend Matrix3 operator * | ( | Real | fScalar,
|  | const Matrix3 & | rkMatrix
| ) | `[friend]`

| Definition at line 172 of file OgreMatrix3.cpp.

_OgreExport friend Vector3 operator * | ( | const Vector3 & | rkVector,
|  | const Matrix3 & | rkMatrix
| ) | `[friend]`

| Definition at line 137 of file OgreMatrix3.cpp.

## Member Data Documentation

const Real Ogre::Matrix3::EPSILON = 1e-06`[static]`

| Definition at line 34 of file OgreMatrix3.cpp. Referenced by Tridiagonal().

const Matrix3 Ogre::Matrix3::IDENTITY`[static]`

Real Ogre::Matrix3::m[3][3]`[protected]`

Definition at line 296 of file OgreMatrix3.h.

Referenced by Determinant(), Ogre::Matrix4::extract3x3Matrix(), FromAxisAngle(), GetColumn(), Inverse(), Matrix3(), Ogre::operator *(), operator *(), operator+(), operator-(), Ogre::Matrix4::operator=(), operator=(), operator==(), Orthonormalize(), QDUDecomposition(), QLAlgorithm(), SetColumn(), SingularValueComposition(), SpectralNorm(), ToAxisAngle(), ToEulerAnglesXYZ(), ToEulerAnglesXZY(), ToEulerAnglesYXZ(), ToEulerAnglesYZX(), ToEulerAnglesZXY(), ToEulerAnglesZYX(), Transpose(), and Tridiagonal().

const Real Ogre::Matrix3::ms_fSvdEpsilon = 1e-04`[static, protected]`

| Definition at line 37 of file OgreMatrix3.cpp. Referenced by SingularValueDecomposition().

const unsigned int Ogre::Matrix3::ms_iSvdMaxIterations = 32`[static, protected]`

| Definition at line 38 of file OgreMatrix3.cpp. Referenced by SingularValueDecomposition().

const Matrix3 Ogre::Matrix3::ZERO`[static]`

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

- OgreMatrix3.h
- OgreMatrix3.cpp

Copyright © 2002-2003 by The OGRE Team
Last modified Sun Nov 28 19:51:12 2004