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

Ogre::Matrix4 Class Reference

Class encapsulating a standard 4x4 homogenous matrix. More...

#include <OgreMatrix4.h>

List of all members.

Public Methods

 Matrix4 ()
 Default constructor.

 Matrix4 (Real m00, Real m01, Real m02, Real m03, Real m10, Real m11, Real m12, Real m13, Real m20, Real m21, Real m22, Real m23, Real m30, Real m31, Real m32, Real m33)
Realoperator[] (size_t iRow)
const Real *const operator[] (size_t iRow) const
Matrix4 concatenate (const Matrix4 &m2) const
Matrix4 operator * (const Matrix4 &m2) const
 Matrix concatenation using '*'.

Vector3 operator * (const Vector3 &v) const
 Vector transformation using '*'.

Vector4 operator * (const Vector4 &v) const
Matrix4 operator+ (const Matrix4 &m2) const
 Matrix addition.

Matrix4 operator- (const Matrix4 &m2) const
 Matrix subtraction.

bool operator== (const Matrix4 &m2) const
 Tests 2 matrices for equality.

bool operator!= (Matrix4 &m2) const
 Tests 2 matrices for inequality.

void operator= (const Matrix3 &mat3)
 Assignment from 3x3 matrix.

Matrix4 transpose (void) const
void setTrans (const Vector3 &v)
 Sets the translation transformation part of the matrix.

void makeTrans (const Vector3 &v)
 Builds a translation matrix.

void makeTrans (Real tx, Real ty, Real tz)
void setScale (const Vector3 &v)
 Sets the scale part of the matrix.

void extract3x3Matrix (Matrix3 &m3x3) const
 Extracts the rotation / scaling part of the Matrix as a 3x3 matrix.

Matrix4 operator * (Real scalar)
Matrix4 adjoint () const
Real determinant () const
Matrix4 inverse () const

Static Public Methods

Matrix4 getTrans (const Vector3 &v)
 Gets a translation matrix.

Matrix4 getTrans (Real t_x, Real t_y, Real t_z)
 Gets a translation matrix - variation for not using a vector.

Matrix4 getScale (const Vector3 &v)
 Gets a scale matrix.

Matrix4 getScale (Real s_x, Real s_y, Real s_z)
 Gets a scale matrix - variation for not using a vector.


Static Public Attributes

const Matrix4 ZERO
const Matrix4 IDENTITY
const Matrix4 CLIPSPACE2DTOIMAGESPACE
 Useful little matrix which takes 2D clipspace {-1, 1} to {0,1} and inverts the Y.


Friends

_OgreExport friend std::ostream & operator<< (std::ostream &o, const Matrix4 &m)
 Function for writing to a stream.


Detailed Description

Class encapsulating a standard 4x4 homogenous matrix.

Remarks:
OGRE uses column vectors when applying matrix multiplications, This means a vector is represented as a single column, 4-row matrix. This has the effect that the tranformations implemented by the matrices happens right-to-left e.g. if vector V is to be transformed by M1 then M2 then M3, the calculation would be M3 * M2 * M1 * V. The order that matrices are concatenated is vital since matrix multiplication is not cummatative, i.e. you can get a different result if you concatenate in the wrong order.

The use of column vectors and right-to-left ordering is the standard in most mathematical texts, and id the same as used in OpenGL. It is, however, the opposite of Direct3D, which has inexplicably chosen to differ from the accepted standard and uses row vectors and left-to-right matrix multiplication.

OGRE deals with the differences between D3D and OpenGL etc. internally when operating through different render systems. OGRE users only need to conform to standard maths conventions, i.e. right-to-left matrix multiplication, (OGRE transposes matrices it passes to D3D to compensate).

The generic form M * V which shows the layout of the matrix entries is shown below:

                [ m[0][0]  m[0][1]  m[0][2]  m[0][3] ]   {x}
                | m[1][0]  m[1][1]  m[1][2]  m[1][3] | * {y}
                | m[2][0]  m[2][1]  m[2][2]  m[2][3] |   {z}
                [ m[3][0]  m[3][1]  m[3][2]  m[3][3] ]   {1}
            

Definition at line 68 of file OgreMatrix4.h.


Constructor & Destructor Documentation

Ogre::Matrix4::Matrix4  
 

Default constructor.

Note:
It does NOT initialize the matrix for efficiency.

Definition at line 81 of file OgreMatrix4.h.

Referenced by adjoint().

Ogre::Matrix4::Matrix4 Real    m00,
Real    m01,
Real    m02,
Real    m03,
Real    m10,
Real    m11,
Real    m12,
Real    m13,
Real    m20,
Real    m21,
Real    m22,
Real    m23,
Real    m30,
Real    m31,
Real    m32,
Real    m33
 

Definition at line 85 of file OgreMatrix4.h.

References Ogre::Real.


Member Function Documentation

Matrix4 Ogre::Matrix4::adjoint   const
 

Definition at line 62 of file OgreMatrix4.cpp.

References Matrix4(), and Ogre::MINOR().

Referenced by inverse().

Matrix4 Ogre::Matrix4::concatenate const Matrix4 &    m2 const
 

Definition at line 121 of file OgreMatrix4.h.

References m.

Referenced by Ogre::D3D9RenderSystem::_setTextureMatrix(), and Ogre::D3DRenderSystem::_setTextureMatrix().

Real Ogre::Matrix4::determinant   const
 

Definition at line 86 of file OgreMatrix4.cpp.

References m, Ogre::MINOR(), and Ogre::Real.

Referenced by inverse().

void Ogre::Matrix4::extract3x3Matrix Matrix3   m3x3 const
 

Extracts the rotation / scaling part of the Matrix as a 3x3 matrix.

Parameters:
m3x3  Destination Matrix3

Definition at line 389 of file OgreMatrix4.h.

References Ogre::Matrix3::m.

Matrix4 Ogre::Matrix4::getScale Real    s_x,
Real    s_y,
Real    s_z
[static]
 

Gets a scale matrix - variation for not using a vector.

Definition at line 375 of file OgreMatrix4.h.

References m, and Ogre::Real.

Matrix4 Ogre::Matrix4::getScale const Vector3   v [static]
 

Gets a scale matrix.

Definition at line 362 of file OgreMatrix4.h.

References m, Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.

Matrix4 Ogre::Matrix4::getTrans Real    t_x,
Real    t_y,
Real    t_z
[static]
 

Gets a translation matrix - variation for not using a vector.

Definition at line 334 of file OgreMatrix4.h.

References m, and Ogre::Real.

Matrix4 Ogre::Matrix4::getTrans const Vector3   v [static]
 

Gets a translation matrix.

Definition at line 320 of file OgreMatrix4.h.

References m, Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.

Matrix4 Ogre::Matrix4::inverse   const
 

Definition at line 94 of file OgreMatrix4.cpp.

References adjoint(), and determinant().

Referenced by Ogre::Light::_getFrustumClipVolumes(), Ogre::Light::_getNearClipVolume(), Ogre::D3D9RenderSystem::_setTextureMatrix(), Ogre::D3DRenderSystem::_setTextureMatrix(), Ogre::AutoParamDataSource::getInverseViewMatrix(), Ogre::AutoParamDataSource::getInverseWorldMatrix(), Ogre::AutoParamDataSource::getInverseWorldViewMatrix(), Ogre::Entity::getShadowVolumeRenderableIterator(), Ogre::Camera::setWindowImpl(), and Ogre::Frustum::updateView().

void Ogre::Matrix4::makeTrans Real    tx,
Real    ty,
Real    tz
 

Definition at line 310 of file OgreMatrix4.h.

References Ogre::Real.

void Ogre::Matrix4::makeTrans const Vector3   v
 

Builds a translation matrix.

Definition at line 302 of file OgreMatrix4.h.

References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.

Matrix4 Ogre::Matrix4::operator * Real    scalar
 

Definition at line 409 of file OgreMatrix4.h.

References Ogre::Real.

Vector4 Ogre::Matrix4::operator * const Vector4   v const
 

Definition at line 175 of file OgreMatrix4.h.

References Ogre::Vector4::w, Ogre::Vector4::x, Ogre::Vector4::y, and Ogre::Vector4::z.

Vector3 Ogre::Matrix4::operator * const Vector3   v const
 

Vector transformation using '*'.

Remarks:
Transforms the given 3-D vector by the matrix, projecting the result back into w = 1.
Note:
This means that the initial w is considered to be 1.0, and then all the tree elements of the resulting 3-D vector are divided by the resulting w.

Definition at line 163 of file OgreMatrix4.h.

References Ogre::Real, Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.

Matrix4 Ogre::Matrix4::operator * const Matrix4 &    m2 const
 

Matrix concatenation using '*'.

Definition at line 149 of file OgreMatrix4.h.

bool Ogre::Matrix4::operator!= Matrix4 &    m2 const
 

Tests 2 matrices for inequality.

Definition at line 258 of file OgreMatrix4.h.

References m.

Matrix4 Ogre::Matrix4::operator+ const Matrix4 &    m2 const
 

Matrix addition.

Definition at line 188 of file OgreMatrix4.h.

References m.

Matrix4 Ogre::Matrix4::operator- const Matrix4 &    m2 const
 

Matrix subtraction.

Definition at line 217 of file OgreMatrix4.h.

References m.

void Ogre::Matrix4::operator= const Matrix3   mat3
 

Assignment from 3x3 matrix.

Definition at line 271 of file OgreMatrix4.h.

References Ogre::Matrix3::m.

bool Ogre::Matrix4::operator== const Matrix4 &    m2 const
 

Tests 2 matrices for equality.

Definition at line 245 of file OgreMatrix4.h.

References m.

const Real* const Ogre::Matrix4::operator[] size_t    iRow const
 

Definition at line 115 of file OgreMatrix4.h.

References Ogre::Real.

Real* Ogre::Matrix4::operator[] size_t    iRow
 

Definition at line 109 of file OgreMatrix4.h.

References Ogre::Real.

void Ogre::Matrix4::setScale const Vector3   v
 

Sets the scale part of the matrix.

Definition at line 353 of file OgreMatrix4.h.

References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.

Referenced by Ogre::OctreeSceneManager::init().

void Ogre::Matrix4::setTrans const Vector3   v
 

Sets the translation transformation part of the matrix.

Definition at line 293 of file OgreMatrix4.h.

References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.

Referenced by Ogre::MeshManager::createCurvedIllusionPlane(), Ogre::MeshManager::createCurvedPlane(), Ogre::MeshManager::createPlane(), Ogre::Node::makeInverseTransform(), Ogre::Node::makeTransform(), and Ogre::Overlay::updateTransform().

Matrix4 Ogre::Matrix4::transpose void    const
 

Definition at line 278 of file OgreMatrix4.h.

Referenced by Ogre::GpuProgramParameters::setConstant().


Friends And Related Function Documentation

_OgreExport friend std::ostream& operator<< std::ostream &    o,
const Matrix4 &    m
[friend]
 

Function for writing to a stream.

Definition at line 421 of file OgreMatrix4.h.


Member Data Documentation

Real Ogre::Matrix4::_m[16] [protected]
 

Definition at line 74 of file OgreMatrix4.h.

const Matrix4 Ogre::Matrix4::CLIPSPACE2DTOIMAGESPACE [static]
 

Useful little matrix which takes 2D clipspace {-1, 1} to {0,1} and inverts the Y.

const Matrix4 Ogre::Matrix4::IDENTITY [static]
 

Real Ogre::Matrix4::m[4][4] [protected]
 

Definition at line 73 of file OgreMatrix4.h.

Referenced by Ogre::D3D9RenderSystem::_setTextureMatrix(), Ogre::D3DRenderSystem::_setTextureMatrix(), concatenate(), Ogre::D3DRenderSystem::convertD3DMatrix(), determinant(), getScale(), getTrans(), Ogre::D3DRenderSystem::makeD3DMatrix(), Ogre::D3D9Mappings::makeD3DXMatrix(), operator!=(), operator+(), operator-(), and operator==().

const Matrix4 Ogre::Matrix4::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