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)
Realoperator[] (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, Real &rfRadians) const
void FromAxisAngle (const Vector3 &rkAxis, Real fRadians)
bool ToEulerAnglesXYZ (float &rfYAngle, float &rfPAngle, float &rfRAngle) const
bool ToEulerAnglesXZY (float &rfYAngle, float &rfPAngle, float &rfRAngle) const
bool ToEulerAnglesYXZ (float &rfYAngle, float &rfPAngle, float &rfRAngle) const
bool ToEulerAnglesYZX (float &rfYAngle, float &rfPAngle, float &rfRAngle) const
bool ToEulerAnglesZXY (float &rfYAngle, float &rfPAngle, float &rfRAngle) const
bool ToEulerAnglesZYX (float &rfYAngle, float &rfPAngle, float &rfRAngle) const
void FromEulerAnglesXYZ (float fYAngle, float fPAngle, float fRAngle)
void FromEulerAnglesXZY (float fYAngle, float fPAngle, float fRAngle)
void FromEulerAnglesYXZ (float fYAngle, float fPAngle, float fRAngle)
void FromEulerAnglesYZX (float fYAngle, float fPAngle, float fRAngle)
void FromEulerAnglesZXY (float fYAngle, float fPAngle, float fRAngle)
void FromEulerAnglesZYX (float fYAngle, float fPAngle, float 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
Vector3 operator * (const Vector3 &rkVector, const Matrix3 &rkMatrix)
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,
Real    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 float    fYAngle,
float    fPAngle,
float    fRAngle
 

Definition at line 1213 of file OgreMatrix3.cpp.

References Ogre::Real.

Referenced by Ogre::Overlay::updateTransform().

void Ogre::Matrix3::FromEulerAnglesXZY float    fYAngle,
float    fPAngle,
float    fRAngle
 

Definition at line 1233 of file OgreMatrix3.cpp.

References Ogre::Real.

void Ogre::Matrix3::FromEulerAnglesYXZ float    fYAngle,
float    fPAngle,
float    fRAngle
 

Definition at line 1253 of file OgreMatrix3.cpp.

References Ogre::Real.

void Ogre::Matrix3::FromEulerAnglesYZX float    fYAngle,
float    fPAngle,
float    fRAngle
 

Definition at line 1273 of file OgreMatrix3.cpp.

References Ogre::Real.

void Ogre::Matrix3::FromEulerAnglesZXY float    fYAngle,
float    fPAngle,
float    fRAngle
 

Definition at line 1293 of file OgreMatrix3.cpp.

References Ogre::Real.

void Ogre::Matrix3::FromEulerAnglesZYX float    fYAngle,
float    fPAngle,
float    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,
Real   rfRadians
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 float &    rfYAngle,
float &    rfPAngle,
float &    rfRAngle
const
 

Definition at line 1003 of file OgreMatrix3.cpp.

References m.

bool Ogre::Matrix3::ToEulerAnglesXZY float &    rfYAngle,
float &    rfPAngle,
float &    rfRAngle
const
 

Definition at line 1038 of file OgreMatrix3.cpp.

References m.

bool Ogre::Matrix3::ToEulerAnglesYXZ float &    rfYAngle,
float &    rfPAngle,
float &    rfRAngle
const
 

Definition at line 1073 of file OgreMatrix3.cpp.

References m.

bool Ogre::Matrix3::ToEulerAnglesYZX float &    rfYAngle,
float &    rfPAngle,
float &    rfRAngle
const
 

Definition at line 1108 of file OgreMatrix3.cpp.

References m.

bool Ogre::Matrix3::ToEulerAnglesZXY float &    rfYAngle,
float &    rfPAngle,
float &    rfRAngle
const
 

Definition at line 1143 of file OgreMatrix3.cpp.

References m.

bool Ogre::Matrix3::ToEulerAnglesZYX float &    rfYAngle,
float &    rfPAngle,
float &    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 211 of file OgreMatrix3.h.

Matrix3 operator * Real    fScalar,
const Matrix3 &    rkMatrix
[friend]
 

Definition at line 172 of file OgreMatrix3.cpp.

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 208 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:

Copyright © 2002-2003 by The OGRE Team
Last modified Fri May 14 23:26:32 2004