- Main Page
- Related Pages
- Modules
- Classes
- Examples

- Class List
- Class Hierarchy
- Class Members

Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Friends

# MMatrix Class Reference

# OpenMaya - API module for common classes

This reference page is linked to from the following overview topics: Overview of custom transforms, Threading and Maya.

Search for all occurrences

## Detailed Description

A matrix math class for 4x4 matrices of doubles.

This class provides access to Maya's internal matrix math library allowing matrices to be handled easily, and in a manner compatible with internal Maya data structures.

All methods that query the matrix are threadsafe, all methods that modify the matrix are not threadsafe.

Examples:

  apiMeshShape.cpp, apiMeshShape.h, apiMeshShapeUI.cpp, apiSimpleShapeUI.cpp, cgfxAttrDef.cpp, cgfxAttrDef.h, cgfxShaderNode.cpp, cgfxVector.cpp, closestPointCmd.cpp, closestPointOnNurbsSurfaceCmd.cpp, cvColorNode.cpp, D3DViewportRenderer.cpp, D3DViewportRenderer.h, dagPoseInfoCmd.cpp, GLSLShaderNode.cpp, hlslShader.cpp, hwAnisotropicShader_NV20.cpp, hwReflectBumpShader_NV20.cpp, hwReflectBumpShader_NV20.h, hwRefractReflectShader_NV20.cpp, hwToonShader_NV20.cpp, instancerListCmd.cpp, intersectOnNurbsSurfaceCmd.cpp, meshRemapTool.cpp, offsetNode.cpp, OpenGLViewportRenderer.cpp, ownerEmitter.cpp, rockingTransform.cpp, rockingTransform.h, sampleCmd.cpp, sampleParticles.cpp, simpleEmitter.cpp, simpleFluidEmitter.cpp, simpleFluidEmitter.h, squareScaleManipContext.cpp, surfaceTwist.cpp, surfaceTwistCmd.cpp, sweptEmitter.cpp, torusField.cpp, and yTwistNode.cpp.

`#include <MMatrix.h>`

List of all members.

## Public Member Functions
| MMatrix ()
| The default contstructor.
| MMatrix (const MMatrix &src)
| The copy Constructor.
| MMatrix (const double m[4][4])
| Initialize the instance with a 4x4 matrix of doubles.
| MMatrix (const float m[4][4])
| Initialize the instance with a 4x4 matrix of floats.
| ~MMatrix ()
| The class destructor.
MMatrix & | operator= (const MMatrix &)
| The assignment operator.
double | operator() (unsigned int row, unsigned int col) const
| Index operator.
const double * | operator[] (unsigned int row) const
| Index operator.
MStatus | get (double dest[4][4]) const
| Fill a 4x4 matrix of doubles with the elements from the instance.
MStatus | get (float dest[4][4]) const
| Fill a 4x4 matrix of floats with the elements from the instance.
MMatrix | transpose () const
| Compute and return the transpose of this instance.
MMatrix & | setToIdentity ()
| Set this instance to the 4x4 identity matrix.
MMatrix & | setToProduct (const MMatrix &left, const MMatrix &right)
| Set this instance to the inner product of the two argument matrices.
MMatrix & | operator+= (const MMatrix &right)
| The in place matrix addition operator.
MMatrix | operator+ (const MMatrix &right) const
| The matrix addition operator.
MMatrix & | operator-= (const MMatrix &right)
| The in place matrix subtraction operator.
MMatrix | operator- (const MMatrix &right) const
| The matrix subtraction operator.
MMatrix & | operator*= (const MMatrix &right)
| The in place matrix multiplication operator.
MMatrix | operator* (const MMatrix &right) const
| The matrix multiplication operator.
MMatrix & | operator*= (double)
| The in place matrix multiply by a scalar operator.
MMatrix | operator* (double) const
| The matrix multiply by a scalar operator.
bool | operator== (const MMatrix &other) const
| The matrix equality operator.
bool | operator!= (const MMatrix &other) const
| The matrix inequality operator.
MMatrix | inverse () const
| Compute and return the inverse of this instance.
MMatrix | adjoint () const
| Compute and return the adjoint of this instance.
MMatrix | homogenize () const
| Compute and return a homogenized version of this instance.
double | det4x4 () const
| Compute and return the determinant of this instance.
double | det3x3 () const
| Compute and return the determinant of the upper left 3x3 submatrix of this instance.
bool | isEquivalent (const MMatrix &other, double tolerance=MMatrix_kTol) const
| Determine if the given matrix is equivalent to this instance within the specified tolerance.
bool | isSingular () const
| Determines if the given matrix is singular.
double & | operator() (unsigned int row, unsigned int col)
| NO SCRIPT SUPPORT.
double * | operator[] (unsigned int row)
| NO SCRIPT SUPPORT.
## Static Public Member Functions
static const char * | className ()
| Returns the name of this class.
## Public Attributes
double | matrix [4][4]
| The matrix data.
## Static Public Attributes Search for all occurrences
static const MMatrix | identity
| The identity matrix.
## Friends
OPENMAYA_EXPORT MMatrix | operator* (double, const MMatrix &right)
| NO SCRIPT SUPPORT.
OPENMAYA_EXPORT std::ostream & | operator<< (std::ostream &os, const MMatrix &m)
| NO SCRIPT SUPPORT. Search for all occurrences

## Constructor & Destructor Documentation

MMatrix | ( |  | ) |

The default contstructor.

The instance is initialized to the 4x4 identity matrix.

MMatrix | ( | const MMatrix & | src | ) |

The copy Constructor.

Parameters:

  [in] | src | Matrix to copy data from

MMatrix | ( | const double | src_matrix[4][4] | ) |

Initialize the instance with a 4x4 matrix of doubles.

Parameters:

  [in] | src_matrix | 4x4 matrix of doubles

MMatrix | ( | const float | src_matrix[4][4] | ) |

Initialize the instance with a 4x4 matrix of floats.

Parameters:

  [in] | src_matrix | 4x4 matrix of floats

## Member Function Documentation

MMatrix & operator= | ( | const MMatrix & | src | ) |

The assignment operator.

Parameters:

  [in] | src | Matrix whose value will be assigned to this one.

Returns:
  This matrix.

double operator() | ( | unsigned int | row,
|  | unsigned int | col
| ) |  | const `[inline]`

Index operator.

Given row and column indices, it will return the value at the specified location in the matrix.

Parameters:

  [in] | row | index of the row to access
  [in] | col | index of the column to access

Returns:
  - the value at the specified location in the matrix.

const double * operator[] | ( | unsigned int | row | ) | const `[inline]`

Index operator.

Returns an entire row of the matrix as an array of doubles.

Parameters:

  [in] | row | index of the row to access

Returns:
  - double array containing the values of the specified row

MStatus get | ( | double | dest[4][4] | ) | const

Search for all occurrences

Fill a 4x4 matrix of doubles with the elements from the instance.

Parameters:

  [out] | dest | 4x4 matrix of doubles to populate

Returns:
  MS::kSuccess when success, MS::kFailure otherwise

Examples:
  cgfxShaderNode.cpp, and cgfxVector.cpp.

MStatus get | ( | float | dest[4][4] | ) | const

Search for all occurrences

Fill a 4x4 matrix of floats with the elements from the instance.

Parameters:

  [out] | dest | 4x4 matrix of floats to populate

Returns:
  MS::kSuccess when success, MS::kFailure otherwise

MMatrix transpose | ( |  | ) | const

Search for all occurrences

Compute and return the transpose of this instance.

Returns:
  The transposed matrix

Examples:
  cgfxShaderNode.cpp, D3DViewportRenderer.cpp, GLSLShaderNode.cpp, and hwReflectBumpShader_NV20.cpp.

MMatrix & setToIdentity | ( |  | ) |

Search for all occurrences

Set this instance to the 4x4 identity matrix.

Returns:
  This matrix.

Examples:
  cgfxShaderNode.cpp, and GLSLShaderNode.cpp.

MMatrix & setToProduct | ( | const MMatrix & | left,
|  | const MMatrix & | right
| ) |  |

Search for all occurrences

Set this instance to the inner product of the two argument matrices.

Parameters:

  [in] | left | the left hand matrix for the operation
  [in] | right | the right hand matrix for the operation

Returns:
  This matrix.

MMatrix & operator+= | ( | const MMatrix & | right | ) |

The in place matrix addition operator.

Modifies this matrix.

Parameters:

  [in] | right | Matrix to add.

Returns:
  This matrix.

MMatrix operator+ | ( | const MMatrix & | right | ) | const

The matrix addition operator.

Does not modify this matrix.

Parameters:

  [in] | right | Matrix to add to this one.

Returns:
  New matrix containing the result.

MMatrix & operator-= | ( | const MMatrix & | right | ) |

The in place matrix subtraction operator.

Modifies this matrix.

Parameters:

  [in] | right | Matrix to add to this one.

Returns:
  This matrix.

MMatrix operator- | ( | const MMatrix & | right | ) | const

The matrix subtraction operator.

Does not modify this matrix.

Parameters:

  [in] | right | Matrix to subtract from this one.

Returns:
  New matrix containing the result.

MMatrix & operator*= | ( | const MMatrix & | right | ) |

The in place matrix multiplication operator.

Modifies this matrix.

Parameters:

  [in] | right | Matrix to multiply this one by.

Returns:
  This matrix.

MMatrix operator* | ( | const MMatrix & | right | ) | const

The matrix multiplication operator.

Does not modify this matrix.

Parameters:

  [in] | right | Matrix to multiply this one by.

Returns:
  New matrix containing the result.

MMatrix & operator*= | ( | double | factor | ) |

The in place matrix multiply by a scalar operator.

Modifies this matrix.

Parameters:

  [in] | factor | Scalar to multiply this matrix by.

Returns:
  This matrix.

MMatrix operator* | ( | double | factor | ) | const

The matrix multiply by a scalar operator.

Does not modify this matrix.

Parameters:

  [in] | factor | Scalar to multiply this matrix by.

Returns:
  New matrix containing the result.

bool operator== | ( | const MMatrix & | other | ) | const

The matrix equality operator.

The matrices must be identical.

Parameters:

  [in] | other | Matrix to compare against.

Returns:
  True if other contains the same values as this matrix, false otherwise.

bool operator!= | ( | const MMatrix & | other | ) | const

The matrix inequality operator.

Parameters:

  [in] | other | Matrix to compare against.

Returns:
  False if other contains the same values as this matrix, true otherwise.

MMatrix inverse | ( |  | ) | const

Search for all occurrences

Compute and return the inverse of this instance.

Returns:
  The inverted matrix

Examples:
  cgfxShaderNode.cpp, D3DViewportRenderer.cpp, GLSLShaderNode.cpp, hwReflectBumpShader_NV20.cpp, offsetNode.cpp, and simpleFluidEmitter.cpp.

MMatrix adjoint | ( |  | ) | const

Search for all occurrences

Compute and return the adjoint of this instance.

Returns:
  The adjoint of this matrix

MMatrix homogenize | ( |  | ) | const

Search for all occurrences

Compute and return a homogenized version of this instance.

Returns:
  The homogenized matrix

double det4x4 | ( |  | ) | const

Search for all occurrences

Compute and return the determinant of this instance.

Returns:
  The determinant

double det3x3 | ( |  | ) | const

Search for all occurrences

Compute and return the determinant of the upper left 3x3 submatrix of this instance.

Returns:
  The determinant

bool isEquivalent | ( | const MMatrix & | other,
|  | double | tolerance = `MMatrix_kTol`
| ) |  | const

Search for all occurrences

Determine if the given matrix is equivalent to this instance within the specified tolerance.

Parameters:

  [in] | other | the matrix to compare to
  [in] | tolerance | the tolerance to use during the comparison

Returns:
  True if the matrices are equivalent and false otherwise

bool isSingular | ( |  | ) | const

Search for all occurrences

Determines if the given matrix is singular.

Returns:
  True if the matrix is singular and false otherwise

double & operator() | ( | unsigned int | row,
|  | unsigned int | col
| ) |  | `[inline]`

NO SCRIPT SUPPORT.

Index operator.

Given row and column indices, it will return the value at the specified location in the matrix.

Parameters:

  [in] | row | index of the row to access
  [in] | col | index of the column to access

Returns:
  - the value at the specified location in the matrix.

double * operator[] | ( | unsigned int | row | ) | `[inline]`

NO SCRIPT SUPPORT.

Index operator.

Returns an entire row of the matrix as an array of doubles.

Parameters:

  [in] | row | index of the row to access

Returns:
  - double array containing the values of the specified row

const char * className | ( |  | ) | `[static]`

Search for all occurrences

Returns the name of this class.

Returns:
  The name of this class.

## Friends And Related Function Documentation

OPENMAYA_EXPORT MMatrix operator* | ( | double | factor,
|  | const MMatrix & | right
| ) |  | `[friend]`

NO SCRIPT SUPPORT.

Does not modify this matrix.

Parameters:

  [in] | factor | Scalar to multiply this matrix by.
  [in] | right | This matrix.

Returns:
  New matrix containing the result.

OPENMAYA_EXPORT std::ostream& operator<< | ( | std::ostream & | os,
|  | const MMatrix & | m
| ) |  | `[friend]`

NO SCRIPT SUPPORT.

The format used is [[r11, r12, r13, r14] [r21, r22, r23, r24] [r31, r32, r33, r34] [r41, r42, r43, r44]].

Parameters:

  [in] | os | the ostream to print to
  [in] | m | the MMatrix whose value is to be printed

Returns:
  Reference to output stream (os) to allow chaining of operations.

MMatrix MMatrix MMatrix MMatrix MMatrix MMatrix MMatrix MMatrix MMatrix MMatrix
MMatrix MMatrix MMatrix MMatrix MMatrix MMatrix MMatrix MMatrix MMatrix MMatrix