Loading...
Searching...
No Matches
irr::core::CMatrix4< T > Class Template Reference

4x4 matrix. Mostly used as transformation matrix for 3d calculations. More...

`#include <matrix4.h>`

## Public Types

enum | eConstructor { EM4CONST_NOTHING = 0 , EM4CONST_COPY , EM4CONST_IDENTITY , EM4CONST_TRANSPOSED , EM4CONST_INVERSE , EM4CONST_INVERSE_TRANSPOSED }
| Constructor Flags. More...

## Public Member Functions

| CMatrix4 (const CMatrix4< T > &other, eConstructor constructor=EM4CONST_COPY)
| Copy constructor.
| CMatrix4 (eConstructor constructor=EM4CONST_IDENTITY)
| Default constructor.
void | buildAxisAlignedBillboard (const core::vector3df &camPos, const core::vector3df &center, const core::vector3df &translation, const core::vector3df &axis, const core::vector3df &from)
| Builds a matrix which rotates a source vector to a look vector over an arbitrary axis.
CMatrix4< T > & | buildCameraLookAtMatrixLH (const vector3df &position, const vector3df &target, const vector3df &upVector)
| Builds a left-handed look-at matrix.
CMatrix4< T > & | buildCameraLookAtMatrixRH (const vector3df &position, const vector3df &target, const vector3df &upVector)
| Builds a right-handed look-at matrix.
CMatrix4< T > & | buildNDCToDCMatrix (const core::rect< s32 > &area, f32 zScale)
| Builds a matrix which transforms a normalized Device Coordinate to Device Coordinates.
CMatrix4< T > & | buildProjectionMatrixOrthoLH (f32 widthOfViewVolume, f32 heightOfViewVolume, f32 zNear, f32 zFar)
| Builds a left-handed orthogonal projection matrix.
CMatrix4< T > & | buildProjectionMatrixOrthoRH (f32 widthOfViewVolume, f32 heightOfViewVolume, f32 zNear, f32 zFar)
| Builds a right-handed orthogonal projection matrix.
CMatrix4< T > & | buildProjectionMatrixPerspectiveFovInfinityLH (f32 fieldOfViewRadians, f32 aspectRatio, f32 zNear, f32 epsilon=0)
| Builds a left-handed perspective projection matrix based on a field of view, with far plane at infinity.
CMatrix4< T > & | buildProjectionMatrixPerspectiveFovLH (f32 fieldOfViewRadians, f32 aspectRatio, f32 zNear, f32 zFar)
| Builds a left-handed perspective projection matrix based on a field of view.
CMatrix4< T > & | buildProjectionMatrixPerspectiveFovRH (f32 fieldOfViewRadians, f32 aspectRatio, f32 zNear, f32 zFar)
| Builds a right-handed perspective projection matrix based on a field of view.
CMatrix4< T > & | buildProjectionMatrixPerspectiveLH (f32 widthOfViewVolume, f32 heightOfViewVolume, f32 zNear, f32 zFar)
| Builds a left-handed perspective projection matrix.
CMatrix4< T > & | buildProjectionMatrixPerspectiveRH (f32 widthOfViewVolume, f32 heightOfViewVolume, f32 zNear, f32 zFar)
| Builds a right-handed perspective projection matrix.
CMatrix4< T > & | buildRotateFromTo (const core::vector3df &from, const core::vector3df &to)
| Builds a matrix that rotates from one vector to another.
CMatrix4< T > & | buildShadowMatrix (const core::vector3df &light, core::plane3df plane, f32 point=1.0f)
| Builds a matrix that flattens geometry into a plane.
CMatrix4< T > & | buildTextureTransform (f32 rotateRad, const core::vector2df &rotatecenter, const core::vector2df &translate, const core::vector2df &scale)
| Set to a texture transformation matrix with the given parameters.
bool | equals (const core::CMatrix4< T > &other, const T tolerance=(T) ROUNDING_ERROR_f64) const
| Compare two matrices using the equal method.
bool | getDefinitelyIdentityMatrix () const
| Gets if the matrix is definitely identity matrix.
bool | getInverse (CMatrix4< T > &out) const
| Gets the inversed matrix of this one.
bool | getInversePrimitive (CMatrix4< T > &out) const
| Inverts a primitive matrix which only contains a translation and a rotation.
core::vector3d< T > | getRotationDegrees () const
| Returns the rotation, as set by setRotation().
core::vector3d< T > | getScale () const
| Get Scale.
vector3d< T > | getTranslation () const
| Gets the current translation.
CMatrix4< T > | getTransposed () const
| Gets transposed matrix.
void | getTransposed (CMatrix4< T > &dest) const
| Gets transposed matrix.
CMatrix4< T > | interpolate (const core::CMatrix4< T > &b, f32 time) const
| Creates a new matrix as interpolated matrix from two other ones.
void | inverseRotateVect (vector3df &vect) const
| Rotate a vector by the inverse of the rotation part of this matrix.
void | inverseTranslateVect (vector3df &vect) const
| Translate a vector by the inverse of the translation part of this matrix.
bool | isIdentity () const
| Returns true if the matrix is the identity matrix.
bool | isIdentity_integer_base () const
| Returns true if the matrix is the identity matrix.
bool | isOrthogonal () const
| Returns true if the matrix is orthogonal.
CMatrix4< T > & | makeIdentity ()
| Set matrix to identity.
bool | makeInverse ()
| Calculates inverse of matrix. Slow.
void | multiplyWith1x4Matrix (T *matrix) const
| Multiplies this matrix by a 1x4 matrix.
bool | operator!= (const CMatrix4< T > &other) const
| Returns true if other matrix is not equal to this matrix.
T & | operator() (const s32 row, const s32 col)
| Simple operator for directly accessing every element of the matrix.
const T & | operator() (const s32 row, const s32 col) const
| Simple operator for directly accessing every element of the matrix.
CMatrix4< T > | operator* (const CMatrix4< T > &other) const
| Multiply by another matrix.
CMatrix4< T > | operator* (const T &scalar) const
| Multiply by scalar.
CMatrix4< T > & | operator*= (const CMatrix4< T > &other)
| Multiply by another matrix.
CMatrix4< T > & | operator*= (const T &scalar)
| Multiply by scalar.
CMatrix4< T > | operator+ (const CMatrix4< T > &other) const
| Add another matrix.
CMatrix4< T > & | operator+= (const CMatrix4< T > &other)
| Add another matrix.
CMatrix4< T > | operator- (const CMatrix4< T > &other) const
| Subtract another matrix.
CMatrix4< T > & | operator-= (const CMatrix4< T > &other)
| Subtract another matrix.
CMatrix4< T > & | operator= (const CMatrix4< T > &other)
| Sets this matrix equal to the other matrix.
CMatrix4< T > & | operator= (const T &scalar)
| Sets all elements of this matrix to the value.
bool | operator== (const CMatrix4< T > &other) const
| Returns true if other matrix is equal to this matrix.
T & | operator[] (u32 index)
| Simple operator for linearly accessing every element of the matrix.
const T & | operator[] (u32 index) const
| Simple operator for linearly accessing every element of the matrix.
T * | pointer ()
const T * | pointer () const
| Returns pointer to internal array.
void | rotateVect (core::vector3df &out, const core::vector3df &in) const
| An alternate transform vector method, writing into a second vector.
void | rotateVect (T *out, const core::vector3df &in) const
| An alternate transform vector method, writing into an array of 3 floats.
void | rotateVect (vector3df &vect) const
| Rotate a vector by the rotation part of this matrix.
CMatrix4< T > & | setbyproduct (const CMatrix4< T > &other_a, const CMatrix4< T > &other_b)
| set this matrix to the product of two matrices
CMatrix4< T > & | setbyproduct_nocheck (const CMatrix4< T > &other_a, const CMatrix4< T > &other_b)
| Set this matrix to the product of two matrices.
void | setDefinitelyIdentityMatrix (bool isDefinitelyIdentityMatrix)
| Sets if the matrix is definitely identity matrix.
CMatrix4< T > & | setInverseRotationDegrees (const vector3d< T > &rotation)
| Make an inverted rotation matrix from Euler angles.
CMatrix4< T > & | setInverseRotationRadians (const vector3d< T > &rotation)
| Make an inverted rotation matrix from Euler angles.
CMatrix4< T > & | setInverseTranslation (const vector3d< T > &translation)
| Set the inverse translation of the current matrix. Will erase any previous values.
CMatrix4< T > & | setM (const T *data)
| Sets all matrix data members at once.
CMatrix4< T > & | setRotationAxisRadians (const T &angle, const vector3d< T > &axis)
| Make a rotation matrix from angle and axis, assuming left handed rotation.
void | setRotationCenter (const core::vector3df &center, const core::vector3df &translate)
| Builds a combined matrix which translates to a center before rotation and translates from origin afterwards.
CMatrix4< T > & | setRotationDegrees (const vector3d< T > &rotation)
| Make a rotation matrix from Euler angles. The 4th row and column are unmodified.
CMatrix4< T > & | setRotationRadians (const vector3d< T > &rotation)
| Make a rotation matrix from Euler angles. The 4th row and column are unmodified.
CMatrix4< T > & | setScale (const T scale)
| Set Scale.
CMatrix4< T > & | setScale (const vector3d< T > &scale)
| Set Scale.
CMatrix4< T > & | setTextureRotationCenter (f32 radAngle)
| Set texture transformation rotation.
CMatrix4< T > & | setTextureScale (f32 sx, f32 sy)
| Set texture transformation scale.
CMatrix4< T > & | setTextureScaleCenter (f32 sx, f32 sy)
| Set texture transformation scale, and recenter at (0.5,0.5).
CMatrix4< T > & | setTextureTranslate (f32 x, f32 y)
| Set texture transformation translation.
CMatrix4< T > & | setTextureTranslateTransposed (f32 x, f32 y)
| Set texture transformation translation, using a transposed representation.
CMatrix4< T > & | setTranslation (const vector3d< T > &translation)
| Set the translation of the current matrix. Will erase any previous values.
void | transformBox (core::aabbox3d< f32 > &box) const
| Transforms a axis aligned bounding box.
void | transformBoxEx (core::aabbox3d< f32 > &box) const
| Transforms a axis aligned bounding box.
void | transformPlane (const core::plane3d< f32 > &in, core::plane3d< f32 > &out) const
| Transforms a plane by this matrix.
void | transformPlane (core::plane3d< f32 > &plane) const
| Transforms a plane by this matrix.
void | transformVec3 (T *out, const T *in) const
| An alternate transform vector method, reading from and writing to an array of 3 floats.
void | transformVect (T *out, const core::vector3df &in) const
| An alternate transform vector method, writing into an array of 4 floats.
void | transformVect (vector3df &out, const vector3df &in) const
| Transforms input vector by this matrix and stores result in output vector.
void | transformVect (vector3df &vect) const
| Transforms the vector by this matrix.
void | translateVect (vector3df &vect) const
| Translate a vector by the translation part of this matrix.

## Detailed Description

template<class T>
class irr::core::CMatrix4< T >

4x4 matrix. Mostly used as transformation matrix for 3d calculations.

The matrix is a D3D style matrix, row major with translations in the 4th row.

Definition at line 45 of file matrix4.h.

## Member Enumeration Documentation

## eConstructor

template<class T>

enum irr::core::CMatrix4::eConstructor

Constructor Flags.

Enumerator
EM4CONST_NOTHING |
EM4CONST_COPY |
EM4CONST_IDENTITY |
EM4CONST_TRANSPOSED |
EM4CONST_INVERSE |
EM4CONST_INVERSE_TRANSPOSED |

Definition at line 50 of file matrix4.h.

## Constructor & Destructor Documentation

## CMatrix4() [1/2]

template<class T>

irr::core::CMatrix4< T >::CMatrix4 | ( | eConstructor | constructor = EM4CONST_IDENTITY | ) |

inline

Default constructor.

Parameters

  constructor | Choose the initialization style

Definition at line 417 of file matrix4.h.

References EM4CONST_COPY, EM4CONST_IDENTITY, EM4CONST_INVERSE, EM4CONST_NOTHING, and makeIdentity().

Referenced by CMatrix4(), buildCameraLookAtMatrixLH(), buildCameraLookAtMatrixRH(), buildNDCToDCMatrix(), buildProjectionMatrixOrthoLH(), buildProjectionMatrixOrthoRH(), buildProjectionMatrixPerspectiveFovInfinityLH(), buildProjectionMatrixPerspectiveFovLH(), buildProjectionMatrixPerspectiveFovRH(), buildProjectionMatrixPerspectiveLH(), buildProjectionMatrixPerspectiveRH(), buildRotateFromTo(), buildShadowMatrix(), buildTextureTransform(), getInverse(), getInversePrimitive(), getRotationDegrees(), getTransposed(), getTransposed(), interpolate(), makeIdentity(), makeInverse(), operator!=(), operator*(), operator*(), operator*=(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator=(), operator=(), operator==(), setbyproduct(), setbyproduct_nocheck(), setInverseRotationDegrees(), setInverseRotationRadians(), setInverseTranslation(), setM(), setRotationAxisRadians(), setRotationDegrees(), setRotationRadians(), setScale(), setTextureRotationCenter(), setTextureScale(), setTextureScaleCenter(), setTextureTranslate(), setTextureTranslateTransposed(), setTranslation(), transformBoxEx(), and transformPlane().

## CMatrix4() [2/2]

template<class T>

irr::core::CMatrix4< T >::CMatrix4 | ( | const CMatrix4< T > & | other,
|  | eConstructor | constructor = EM4CONST_COPY )

inline

Copy constructor.

Parameters

  other | Other matrix to copy from
  constructor | Choose the initialization style

Definition at line 440 of file matrix4.h.

References CMatrix4(), EM4CONST_COPY, EM4CONST_IDENTITY, EM4CONST_INVERSE, EM4CONST_INVERSE_TRANSPOSED, EM4CONST_NOTHING, EM4CONST_TRANSPOSED, getInverse(), getTransposed(), and makeIdentity().

## Member Function Documentation

## buildAxisAlignedBillboard()

template<class T>

void irr::core::CMatrix4< T >::buildAxisAlignedBillboard | ( | const core::vector3df & | camPos,
|  | const core::vector3df & | center,
|  | const core::vector3df & | translation,
|  | const core::vector3df & | axis,
|  | const core::vector3df & | from )

inline

Builds a matrix which rotates a source vector to a look vector over an arbitrary axis.

Parameters

  camPos | viewer position in world coo
  center | object position in world-coo and rotation pivot
  translation | object final translation from center
  axis | axis to rotate about
  from | source vector to rotate from
  camPos | viewer position in world coord
  center | object position in world-coord, rotation pivot
  translation | object final translation from center
  axis | axis to rotate about
  from | source vector to rotate from

Definition at line 1992 of file matrix4.h.

References irr::core::vector3d< T >::crossProduct(), irr::core::vector3d< T >::dotProduct(), irr::core::vector3d< T >::normalize(), setRotationCenter(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## buildCameraLookAtMatrixLH()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildCameraLookAtMatrixLH | ( | const vector3df & | position,
|  | const vector3df & | target,
|  | const vector3df & | upVector )

inline

Builds a left-handed look-at matrix.

Definition at line 1777 of file matrix4.h.

References CMatrix4(), irr::core::vector3d< T >::crossProduct(), irr::core::vector3d< T >::dotProduct(), irr::core::vector3d< T >::normalize(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## buildCameraLookAtMatrixRH()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildCameraLookAtMatrixRH | ( | const vector3df & | position,
|  | const vector3df & | target,
|  | const vector3df & | upVector )

inline

Builds a right-handed look-at matrix.

Definition at line 1818 of file matrix4.h.

References CMatrix4(), irr::core::vector3d< T >::crossProduct(), irr::core::vector3d< T >::dotProduct(), irr::core::vector3d< T >::normalize(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## buildNDCToDCMatrix()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildNDCToDCMatrix | ( | const core::rect< s32 > & | area,
|  | f32 | zScale )

inline

Builds a matrix which transforms a normalized Device Coordinate to Device Coordinates.

Used to scale <-1,-1><1,1> to viewport, for example from <-1,-1> <1,1> to the viewport <0,0><0,640>

Definition at line 1915 of file matrix4.h.

References CMatrix4(), irr::core::rect< T >::getHeight(), irr::core::rect< T >::getWidth(), irr::core::rect< T >::LowerRightCorner, makeIdentity(), setScale(), and irr::core::rect< T >::UpperLeftCorner.

## buildProjectionMatrixOrthoLH()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildProjectionMatrixOrthoLH | ( | f32 | widthOfViewVolume,
|  | f32 | heightOfViewVolume,
|  | f32 | zNear,
|  | f32 | zFar )

inline

Builds a left-handed orthogonal projection matrix.

Definition at line 1606 of file matrix4.h.

References CMatrix4(), and _IRR_DEBUG_BREAK_IF.

## buildProjectionMatrixOrthoRH()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildProjectionMatrixOrthoRH | ( | f32 | widthOfViewVolume,
|  | f32 | heightOfViewVolume,
|  | f32 | zNear,
|  | f32 | zFar )

inline

Builds a right-handed orthogonal projection matrix.

Definition at line 1641 of file matrix4.h.

References CMatrix4(), and _IRR_DEBUG_BREAK_IF.

## buildProjectionMatrixPerspectiveFovInfinityLH()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildProjectionMatrixPerspectiveFovInfinityLH | ( | f32 | fieldOfViewRadians,
|  | f32 | aspectRatio,
|  | f32 | zNear,
|  | f32 | epsilon = 0 )

inline

Builds a left-handed perspective projection matrix based on a field of view, with far plane at infinity.

Definition at line 1570 of file matrix4.h.

References CMatrix4(), _IRR_DEBUG_BREAK_IF, and irr::core::reciprocal().

## buildProjectionMatrixPerspectiveFovLH()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildProjectionMatrixPerspectiveFovLH | ( | f32 | fieldOfViewRadians,
|  | f32 | aspectRatio,
|  | f32 | zNear,
|  | f32 | zFar )

inline

Builds a left-handed perspective projection matrix based on a field of view.

Definition at line 1533 of file matrix4.h.

References CMatrix4(), _IRR_DEBUG_BREAK_IF, and irr::core::reciprocal().

## buildProjectionMatrixPerspectiveFovRH()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildProjectionMatrixPerspectiveFovRH | ( | f32 | fieldOfViewRadians,
|  | f32 | aspectRatio,
|  | f32 | zNear,
|  | f32 | zFar )

inline

Builds a right-handed perspective projection matrix based on a field of view.

Definition at line 1494 of file matrix4.h.

References CMatrix4(), _IRR_DEBUG_BREAK_IF, and irr::core::reciprocal().

## buildProjectionMatrixPerspectiveLH()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildProjectionMatrixPerspectiveLH | ( | f32 | widthOfViewVolume,
|  | f32 | heightOfViewVolume,
|  | f32 | zNear,
|  | f32 | zFar )

inline

Builds a left-handed perspective projection matrix.

Definition at line 1711 of file matrix4.h.

References CMatrix4(), and _IRR_DEBUG_BREAK_IF.

## buildProjectionMatrixPerspectiveRH()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildProjectionMatrixPerspectiveRH | ( | f32 | widthOfViewVolume,
|  | f32 | heightOfViewVolume,
|  | f32 | zNear,
|  | f32 | zFar )

inline

Builds a right-handed perspective projection matrix.

Definition at line 1676 of file matrix4.h.

References CMatrix4(), and _IRR_DEBUG_BREAK_IF.

## buildRotateFromTo()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildRotateFromTo | ( | const core::vector3df & | from,
|  | const core::vector3df & | to )

inline

Builds a matrix that rotates from one vector to another.

Parameters

  from | vector to rotate from
  to | vector to rotate to
  from | vector to rotate from
  to | vector to rotate to

http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToMatrix/index.htm

Definition at line 1936 of file matrix4.h.

References CMatrix4(), irr::core::vector3d< T >::crossProduct(), irr::core::vector3d< T >::dotProduct(), irr::core::vector3d< T >::normalize(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## buildShadowMatrix()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildShadowMatrix | ( | const core::vector3df & | light,
|  | core::plane3df | plane,
|  | f32 | point = 1.0f )

inline

Builds a matrix that flattens geometry into a plane.

Parameters

  light | light source
  plane | plane into which the geometry if flattened into
  point | value between 0 and 1, describing the light source. If this is 1, it is a point light, if it is 0, it is a directional light.

Definition at line 1745 of file matrix4.h.

References CMatrix4(), irr::core::plane3d< T >::D, irr::core::vector3d< T >::dotProduct(), irr::core::plane3d< T >::Normal, irr::core::vector3d< T >::normalize(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## buildTextureTransform()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::buildTextureTransform | ( | f32 | rotateRad,
|  | const core::vector2df & | rotatecenter,
|  | const core::vector2df & | translate,
|  | const core::vector2df & | scale )

inline

Set to a texture transformation matrix with the given parameters.

Generate texture coordinates as linear functions so that: u = Ux*x + Uy*y + Uz*z + Uw v = Vx*x + Vy*y + Vz*z + Vw The matrix M for this case is: Ux Vx 0 0 Uy Vy 0 0 Uz Vz 0 0 Uw Vw 0 0

Definition at line 2067 of file matrix4.h.

References CMatrix4(), irr::core::vector2d< T >::X, and irr::core::vector2d< T >::Y.

## equals()

template<class T>

bool irr::core::CMatrix4< T >::equals | ( | const core::CMatrix4< T > & | other,
|  | const T | tolerance = (T)ROUNDING_ERROR_f64 ) const

inline

Compare two matrices using the equal method.

Definition at line 2212 of file matrix4.h.

References irr::core::equals().

## getDefinitelyIdentityMatrix()

template<class T>

bool irr::core::CMatrix4< T >::getDefinitelyIdentityMatrix | ( |  | ) | const

inline

Gets if the matrix is definitely identity matrix.

Definition at line 2200 of file matrix4.h.

## getInverse()

template<class T>

bool irr::core::CMatrix4< T >::getInverse | ( | CMatrix4< T > & | out | ) | const

inline

Gets the inversed matrix of this one.

Parameters

  out | where result matrix is written to.

Returns
  Returns false if there is no inverse matrix.

Calculates the inverse of this Matrix The inverse is calculated using Cramers rule. If no inverse exists then 'false' is returned.

Definition at line 1309 of file matrix4.h.

References CMatrix4(), FLT_MIN, isIdentity(), irr::core::iszero(), and irr::core::reciprocal().

Referenced by CMatrix4(), and makeInverse().

## getInversePrimitive()

template<class T>

bool irr::core::CMatrix4< T >::getInversePrimitive | ( | CMatrix4< T > & | out | ) | const

inline

Inverts a primitive matrix which only contains a translation and a rotation.

Parameters

  out | where result matrix is written to.

Inverts a primitive matrix which only contains a translation and a rotation

Parameters

  out | where result matrix is written to.

Definition at line 1395 of file matrix4.h.

References CMatrix4().

## getRotationDegrees()

template<class T>

core::vector3d< T > irr::core::CMatrix4< T >::getRotationDegrees | ( |  | ) | const

inline

Returns the rotation, as set by setRotation().

Returns a rotation that is equivalent to that set by setRotationDegrees().

This code was orginally written by by Chev.

This code was sent in by Chev. Note that it does not necessarily return the same Euler angles as those set by setRotationDegrees(), but the rotation will be equivalent, i.e. will have the same result when used to rotate a vector or node.

Definition at line 860 of file matrix4.h.

References CMatrix4(), irr::core::clamp(), getScale(), irr::core::iszero(), irr::core::RADTODEG64, irr::core::reciprocal(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## getScale()

template<class T>

vector3d< T > irr::core::CMatrix4< T >::getScale | ( |  | ) | const

inline

Get Scale.

Returns the absolute values of the scales of the matrix.

Note that this returns the absolute (positive) values unless only scale is set. Unfortunately it does not appear to be possible to extract any original negative values. The best that we could do would be to arbitrarily make one scale negative if one or three of them were negative. FIXME - return the original values.

Definition at line 795 of file matrix4.h.

References irr::core::iszero().

Referenced by getRotationDegrees().

## getTranslation()

template<class T>

vector3d< T > irr::core::CMatrix4< T >::getTranslation | ( |  | ) | const

inline

Gets the current translation.

Definition at line 744 of file matrix4.h.

## getTransposed() [1/2]

template<class T>

CMatrix4< T > irr::core::CMatrix4< T >::getTransposed | ( |  | ) | const

inline

Gets transposed matrix.

Definition at line 1876 of file matrix4.h.

References CMatrix4(), EM4CONST_NOTHING, and getTransposed().

Referenced by CMatrix4(), and getTransposed().

## getTransposed() [2/2]

template<class T>

void irr::core::CMatrix4< T >::getTransposed | ( | CMatrix4< T > & | dest | ) | const

inline

Gets transposed matrix.

Definition at line 1886 of file matrix4.h.

References CMatrix4().

## interpolate()

template<class T>

CMatrix4< T > irr::core::CMatrix4< T >::interpolate | ( | const core::CMatrix4< T > & | b,
|  | f32 | time ) const

inline

Creates a new matrix as interpolated matrix from two other ones.

Parameters

  b | other matrix to interpolate with
  time | Must be a value between 0 and 1.

Definition at line 1859 of file matrix4.h.

References CMatrix4(), and EM4CONST_NOTHING.

## inverseRotateVect()

template<class T>

void irr::core::CMatrix4< T >::inverseRotateVect | ( | vector3df & | vect | ) | const

inline

Rotate a vector by the inverse of the rotation part of this matrix.

Definition at line 1128 of file matrix4.h.

References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## inverseTranslateVect()

template<class T>

void irr::core::CMatrix4< T >::inverseTranslateVect | ( | vector3df & | vect | ) | const

inline

Translate a vector by the inverse of the translation part of this matrix.

Definition at line 1292 of file matrix4.h.

References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## isIdentity()

template<class T>

bool irr::core::CMatrix4< T >::isIdentity | ( |  | ) | const

inline

Returns true if the matrix is the identity matrix.

Definition at line 1000 of file matrix4.h.

References irr::core::equals().

Referenced by getInverse(), operator*(), operator*=(), setbyproduct(), transformBox(), and transformBoxEx().

## isIdentity_integer_base()

template<class T>

bool irr::core::CMatrix4< T >::isIdentity_integer_base | ( |  | ) | const

inline

Returns true if the matrix is the identity matrix.

Definition at line 1067 of file matrix4.h.

References F32_VALUE_1, and irr::core::IR().

## isOrthogonal()

template<class T>

bool irr::core::CMatrix4< T >::isOrthogonal | ( |  | ) | const

inline

Returns true if the matrix is orthogonal.

Definition at line 1038 of file matrix4.h.

References irr::core::iszero().

## makeIdentity()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::makeIdentity | ( |  | ) |

inline

Set matrix to identity.

Definition at line 984 of file matrix4.h.

References CMatrix4().

Referenced by CMatrix4(), CMatrix4(), and buildNDCToDCMatrix().

## makeInverse()

template<class T>

bool irr::core::CMatrix4< T >::makeInverse | ( |  | ) |

inline

Calculates inverse of matrix. Slow.

Returns
  Returns false if there is no inverse matrix.

Definition at line 1426 of file matrix4.h.

References CMatrix4(), EM4CONST_NOTHING, and getInverse().

## multiplyWith1x4Matrix()

template<class T>

void irr::core::CMatrix4< T >::multiplyWith1x4Matrix | ( | T * | matrix | ) | const

inline

Multiplies this matrix by a 1x4 matrix.

Definition at line 1270 of file matrix4.h.

## operator!=()

template<class T>

bool irr::core::CMatrix4< T >::operator!= | ( | const CMatrix4< T > & | other | ) | const

inline

Returns true if other matrix is not equal to this matrix.

Definition at line 1486 of file matrix4.h.

References CMatrix4().

## operator()() [1/2]

template<class T>

T & irr::core::CMatrix4< T >::operator() | ( | const s32 | row,
|  | const s32 | col )

inline

Simple operator for directly accessing every element of the matrix.

Definition at line 69 of file matrix4.h.

## operator()() [2/2]

template<class T>

const T & irr::core::CMatrix4< T >::operator() | ( | const s32 | row,
|  | const s32 | col ) const

inline

Simple operator for directly accessing every element of the matrix.

Definition at line 78 of file matrix4.h.

## operator*() [1/2]

template<class T>

CMatrix4< T > irr::core::CMatrix4< T >::operator* | ( | const CMatrix4< T > & | other | ) | const

inline

Multiply by another matrix.

multiply by another matrix

Calculate other*this

Definition at line 705 of file matrix4.h.

References CMatrix4(), EM4CONST_NOTHING, and isIdentity().

## operator*() [2/2]

template<class T>

CMatrix4< T > irr::core::CMatrix4< T >::operator* | ( | const T & | scalar | ) | const

inline

Multiply by scalar.

Definition at line 576 of file matrix4.h.

References CMatrix4(), and EM4CONST_NOTHING.

## operator*=() [1/2]

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::operator*= | ( | const CMatrix4< T > & | other | ) |

inline

Multiply by another matrix.

Calculate and return other*this

Definition at line 626 of file matrix4.h.

References CMatrix4(), isIdentity(), and setbyproduct_nocheck().

## operator*=() [2/2]

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::operator*= | ( | const T & | scalar | ) |

inline

Multiply by scalar.

Definition at line 602 of file matrix4.h.

References CMatrix4().

## operator+()

template<class T>

CMatrix4< T > irr::core::CMatrix4< T >::operator+ | ( | const CMatrix4< T > & | other | ) | const

inline

Add another matrix.

Definition at line 476 of file matrix4.h.

References CMatrix4(), and EM4CONST_NOTHING.

## operator+=()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::operator+= | ( | const CMatrix4< T > & | other | ) |

inline

Add another matrix.

Definition at line 502 of file matrix4.h.

References CMatrix4().

## operator-()

template<class T>

CMatrix4< T > irr::core::CMatrix4< T >::operator- | ( | const CMatrix4< T > & | other | ) | const

inline

Subtract another matrix.

Definition at line 526 of file matrix4.h.

References CMatrix4(), and EM4CONST_NOTHING.

## operator-=()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::operator-= | ( | const CMatrix4< T > & | other | ) |

inline

Subtract another matrix.

Definition at line 552 of file matrix4.h.

References CMatrix4().

## operator=() [1/2]

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::operator= | ( | const CMatrix4< T > & | other | ) |

inline

Sets this matrix equal to the other matrix.

Definition at line 1445 of file matrix4.h.

References CMatrix4().

## operator=() [2/2]

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::operator= | ( | const T & | scalar | ) |

inline

Sets all elements of this matrix to the value.

Definition at line 1458 of file matrix4.h.

References CMatrix4().

## operator==()

template<class T>

bool irr::core::CMatrix4< T >::operator== | ( | const CMatrix4< T > & | other | ) | const

inline

Returns true if other matrix is equal to this matrix.

Definition at line 1471 of file matrix4.h.

References CMatrix4().

## operator[]() [1/2]

template<class T>

T & irr::core::CMatrix4< T >::operator[] | ( | u32 | index | ) |

inline

Simple operator for linearly accessing every element of the matrix.

Definition at line 81 of file matrix4.h.

## operator[]() [2/2]

template<class T>

const T & irr::core::CMatrix4< T >::operator[] | ( | u32 | index | ) | const

inline

Simple operator for linearly accessing every element of the matrix.

Definition at line 90 of file matrix4.h.

## pointer() [1/2]

template<class T>

T * irr::core::CMatrix4< T >::pointer | ( |  | ) |

inline

Definition at line 100 of file matrix4.h.

## pointer() [2/2]

template<class T>

const T * irr::core::CMatrix4< T >::pointer | ( |  | ) | const

inline

Returns pointer to internal array.

Definition at line 99 of file matrix4.h.

## rotateVect() [1/3]

template<class T>

void irr::core::CMatrix4< T >::rotateVect | ( | core::vector3df & | out,
|  | const core::vector3df & | in ) const

inline

An alternate transform vector method, writing into a second vector.

Definition at line 1111 of file matrix4.h.

References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## rotateVect() [2/3]

template<class T>

void irr::core::CMatrix4< T >::rotateVect | ( | T * | out,
|  | const core::vector3df & | in ) const

inline

An alternate transform vector method, writing into an array of 3 floats.

Definition at line 1120 of file matrix4.h.

References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## rotateVect() [3/3]

template<class T>

void irr::core::CMatrix4< T >::rotateVect | ( | vector3df & | vect | ) | const

inline

Rotate a vector by the rotation part of this matrix.

Definition at line 1101 of file matrix4.h.

References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## setbyproduct()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setbyproduct | ( | const CMatrix4< T > & | other_a,
|  | const CMatrix4< T > & | other_b )

inline

set this matrix to the product of two matrices

multiply by another matrix

Calculate b*a

Definition at line 688 of file matrix4.h.

References CMatrix4(), isIdentity(), and setbyproduct_nocheck().

## setbyproduct_nocheck()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setbyproduct_nocheck | ( | const CMatrix4< T > & | other_a,
|  | const CMatrix4< T > & | other_b )

inline

Set this matrix to the product of two matrices.

multiply by another matrix

Calculate b*a, no optimization used, use it if you know you never have a identity matrix

Definition at line 653 of file matrix4.h.

References CMatrix4().

Referenced by operator*=(), and setbyproduct().

## setDefinitelyIdentityMatrix()

template<class T>

void irr::core::CMatrix4< T >::setDefinitelyIdentityMatrix | ( | bool | isDefinitelyIdentityMatrix | ) |

inline

Sets if the matrix is definitely identity matrix.

Definition at line 2190 of file matrix4.h.

Referenced by irr::core::quaternion::getMatrix(), and irr::core::quaternion::getMatrix_transposed().

## setInverseRotationDegrees()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setInverseRotationDegrees | ( | const vector3d< T > & | rotation | ) |

inline

Make an inverted rotation matrix from Euler angles.

The 4th row and column are unmodified.

Definition at line 819 of file matrix4.h.

References CMatrix4(), irr::core::DEGTORAD, and setInverseRotationRadians().

## setInverseRotationRadians()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setInverseRotationRadians | ( | const vector3d< T > & | rotation | ) |

inline

Make an inverted rotation matrix from Euler angles.

Sets matrix to rotation matrix of inverse angles given as parameters.

The 4th row and column are unmodified.

Definition at line 917 of file matrix4.h.

References CMatrix4(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

Referenced by setInverseRotationDegrees().

## setInverseTranslation()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setInverseTranslation | ( | const vector3d< T > & | translation | ) |

inline

Set the inverse translation of the current matrix. Will erase any previous values.

Definition at line 763 of file matrix4.h.

References CMatrix4(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## setM()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setM | ( | const T * | data | ) |

inline

Sets all matrix data members at once.

Definition at line 2177 of file matrix4.h.

References CMatrix4().

## setRotationAxisRadians()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setRotationAxisRadians | ( | const T & | angle,
|  | const vector3d< T > & | axis )

inline

Make a rotation matrix from angle and axis, assuming left handed rotation.

Sets matrix to rotation matrix defined by axis and angle, assuming LH rotation.

The 4th row and column are unmodified.

Definition at line 948 of file matrix4.h.

References CMatrix4(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## setRotationCenter()

template<class T>

void irr::core::CMatrix4< T >::setRotationCenter | ( | const core::vector3df & | center,
|  | const core::vector3df & | translate )

inline

Builds a combined matrix which translates to a center before rotation and translates from origin afterwards.

Builds a combined matrix which translate to a center before rotation and translate afterwards.

Parameters

  center | Position to rotate around
  translate | Translation applied after the rotation

Definition at line 2043 of file matrix4.h.

References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

Referenced by buildAxisAlignedBillboard(), and irr::core::quaternion::getMatrixCenter().

## setRotationDegrees()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setRotationDegrees | ( | const vector3d< T > & | rotation | ) |

inline

Make a rotation matrix from Euler angles. The 4th row and column are unmodified.

Definition at line 813 of file matrix4.h.

References CMatrix4(), irr::core::DEGTORAD, and setRotationRadians().

Referenced by irr::scene::ISceneNode::getRelativeTransformation().

## setRotationRadians()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setRotationRadians | ( | const vector3d< T > & | rotation | ) |

inline

Make a rotation matrix from Euler angles. The 4th row and column are unmodified.

Definition at line 825 of file matrix4.h.

References CMatrix4(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

Referenced by setRotationDegrees().

## setScale() [1/2]

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setScale | ( | const T | scale | ) |

inline

Set Scale.

Definition at line 196 of file matrix4.h.

Referenced by irr::core::CMatrix4< f32 >::setScale().

## setScale() [2/2]

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setScale | ( | const vector3d< T > & | scale | ) |

inline

Set Scale.

Definition at line 775 of file matrix4.h.

References CMatrix4(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

Referenced by buildNDCToDCMatrix(), and irr::scene::ISceneNode::getRelativeTransformation().

## setTextureRotationCenter()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setTextureRotationCenter | ( | f32 | radAngle | ) |

inline

Set texture transformation rotation.

Rotate about z axis, recenter at (0.5,0.5). Doesn't clear other elements than those affected

Parameters

  radAngle | Angle in radians

Returns
  Altered matrix

Definition at line 2103 of file matrix4.h.

References CMatrix4().

## setTextureScale()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setTextureScale | ( | f32 | sx,
|  | f32 | sy )

inline

Set texture transformation scale.

Doesn't clear other elements than those affected.

Parameters

  sx | Scale factor on x axis
  sy | Scale factor on y axis

Returns
  Altered matrix.

Definition at line 2149 of file matrix4.h.

References CMatrix4().

## setTextureScaleCenter()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setTextureScaleCenter | ( | f32 | sx,
|  | f32 | sy )

inline

Set texture transformation scale, and recenter at (0.5,0.5).

Doesn't clear other elements than those affected.

Parameters

  sx | Scale factor on x axis
  sy | Scale factor on y axis

Returns
  Altered matrix.

Definition at line 2161 of file matrix4.h.

References CMatrix4().

## setTextureTranslate()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setTextureTranslate | ( | f32 | x,
|  | f32 | y )

inline

Set texture transformation translation.

Doesn't clear other elements than those affected.

Parameters

  x | Offset on x axis
  y | Offset on y axis

Returns
  Altered matrix

Definition at line 2124 of file matrix4.h.

References CMatrix4().

## setTextureTranslateTransposed()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setTextureTranslateTransposed | ( | f32 | x,
|  | f32 | y )

inline

Set texture transformation translation, using a transposed representation.

Doesn't clear other elements than those affected.

Parameters

  x | Offset on x axis
  y | Offset on y axis

Returns
  Altered matrix

Definition at line 2137 of file matrix4.h.

References CMatrix4().

## setTranslation()

template<class T>

CMatrix4< T > & irr::core::CMatrix4< T >::setTranslation | ( | const vector3d< T > & | translation | ) |

inline

Set the translation of the current matrix. Will erase any previous values.

Definition at line 751 of file matrix4.h.

References CMatrix4(), irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

Referenced by irr::scene::ISceneNode::getRelativeTransformation().

## transformBox()

template<class T>

_IRR_DEPRECATED_ void irr::core::CMatrix4< T >::transformBox | ( | core::aabbox3d< f32 > & | box | ) | const

inline

Transforms a axis aligned bounding box.

The result box of this operation may not be accurate at all. For correct results, use transformBoxEx()

Transforms the edge-points of a bounding box Deprecated as it's usually not what people need (regards only 2 corners, but other corners might be outside the box after transformation) Use transformBoxEx instead.

Definition at line 1205 of file matrix4.h.

References _IRR_DEPRECATED_, isIdentity(), irr::core::aabbox3d< T >::MaxEdge, irr::core::aabbox3d< T >::MinEdge, irr::core::aabbox3d< T >::repair(), and transformVect().

## transformBoxEx()

template<class T>

void irr::core::CMatrix4< T >::transformBoxEx | ( | core::aabbox3d< f32 > & | box | ) | const

inline

Transforms a axis aligned bounding box.

Transforms a axis aligned bounding box more accurately than transformBox().

The result box of this operation should by accurate, but this operation is slower than transformBox().

Definition at line 1219 of file matrix4.h.

References CMatrix4(), isIdentity(), irr::core::aabbox3d< T >::MaxEdge, and irr::core::aabbox3d< T >::MinEdge.

## transformPlane() [1/2]

template<class T>

void irr::core::CMatrix4< T >::transformPlane | ( | const core::plane3d< f32 > & | in,
|  | core::plane3d< f32 > & | out ) const

inline

Transforms a plane by this matrix.

Definition at line 1195 of file matrix4.h.

References transformPlane().

## transformPlane() [2/2]

template<class T>

void irr::core::CMatrix4< T >::transformPlane | ( | core::plane3d< f32 > & | plane | ) | const

inline

Transforms a plane by this matrix.

Definition at line 1179 of file matrix4.h.

References CMatrix4(), EM4CONST_INVERSE_TRANSPOSED, irr::core::plane3d< T >::getMemberPoint(), irr::core::plane3d< T >::Normal, irr::core::plane3d< T >::setPlane(), and transformVect().

Referenced by irr::scene::SViewFrustum::transform(), and transformPlane().

## transformVec3()

template<class T>

void irr::core::CMatrix4< T >::transformVec3 | ( | T * | out,
|  | const T * | in ) const

inline

An alternate transform vector method, reading from and writing to an array of 3 floats.

Definition at line 1169 of file matrix4.h.

## transformVect() [1/3]

template<class T>

void irr::core::CMatrix4< T >::transformVect | ( | T * | out,
|  | const core::vector3df & | in ) const

inline

An alternate transform vector method, writing into an array of 4 floats.

Definition at line 1160 of file matrix4.h.

References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## transformVect() [2/3]

template<class T>

void irr::core::CMatrix4< T >::transformVect | ( | vector3df & | out,
|  | const vector3df & | in ) const

inline

Transforms input vector by this matrix and stores result in output vector.

Definition at line 1151 of file matrix4.h.

References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

## transformVect() [3/3]

template<class T>

void irr::core::CMatrix4< T >::transformVect | ( | vector3df & | vect | ) | const

inline

Transforms the vector by this matrix.

Definition at line 1137 of file matrix4.h.

References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

Referenced by irr::scene::SViewFrustum::transform(), transformBox(), and transformPlane().

## translateVect()

template<class T>

void irr::core::CMatrix4< T >::translateVect | ( | vector3df & | vect | ) | const

inline

Translate a vector by the translation part of this matrix.

Definition at line 1300 of file matrix4.h.

References irr::core::vector3d< T >::X, irr::core::vector3d< T >::Y, and irr::core::vector3d< T >::Z.

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

- matrix4.h

- Irrlicht Engine Documentation © 2003-2012 by Nikolaus Gebhardt. Generated on for Irrlicht 3D Engine by Doxygen 1.15.0