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

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