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

MMatrix Class Reference

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, footPrintNode.cpp, GLSLShaderNode.cpp, hlslShader.cpp, hwAnisotropicShader_NV20.cpp, hwColorPerVertexShader.cpp, hwPhongShader.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, surfaceTwistCmd.cpp, sweptEmitter.cpp, swissArmyManip.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.
MMatrixoperator= (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.
MMatrixsetToIdentity ()
 Set this instance to the 4x4 identity matrix.
MMatrixsetToProduct (const MMatrix &left, const MMatrix &right)
 Set this instance to the inner product of the two argument matrices.
MMatrixoperator+= (const MMatrix &right)
 The in place matrix addition operator.
MMatrix operator+ (const MMatrix &right) const
 The matrix addition operator.
MMatrixoperator-= (const MMatrix &right)
 The in place matrix subtraction operator.
MMatrix operator- (const MMatrix &right) const
 The matrix subtraction operator.
MMatrixoperator*= (const MMatrix &right)
 The in place matrix multiplication operator.
MMatrix operator* (const MMatrix &right) const
 The matrix multiplication operator.
MMatrixoperator*= (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

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.

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]srcMatrix to copy data from
MMatrix ( const double  src_matrix[4][4])

Initialize the instance with a 4x4 matrix of doubles.

Parameters:
[in]src_matrix4x4 matrix of doubles
MMatrix ( const float  src_matrix[4][4])

Initialize the instance with a 4x4 matrix of floats.

Parameters:
[in]src_matrix4x4 matrix of floats

Member Function Documentation

MMatrix & operator= ( const MMatrix src)

The assignment operator.

Parameters:
[in]srcMatrix 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]rowindex of the row to access
[in]colindex 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]rowindex of the row to access
Returns:
  • double array containing the values of the specified row
MStatus get ( double  dest[4][4]) const

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

Parameters:
[out]dest4x4 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

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

Parameters:
[out]dest4x4 matrix of floats to populate
Returns:
MS::kSuccess when success, MS::kFailure otherwise
MMatrix transpose ( ) const

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 ( )

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 
)

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

Parameters:
[in]leftthe left hand matrix for the operation
[in]rightthe 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]rightMatrix to add.
Returns:
This matrix.
MMatrix operator+ ( const MMatrix right) const

The matrix addition operator.

Does not modify this matrix.

Parameters:
[in]rightMatrix 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]rightMatrix 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]rightMatrix 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]rightMatrix 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]rightMatrix 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]factorScalar 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]factorScalar 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]otherMatrix 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]otherMatrix to compare against.
Returns:
False if other contains the same values as this matrix, true otherwise.
MMatrix inverse ( ) const

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

Compute and return the adjoint of this instance.

Returns:
The adjoint of this matrix
MMatrix homogenize ( ) const

Compute and return a homogenized version of this instance.

Returns:
The homogenized matrix
double det4x4 ( ) const

Compute and return the determinant of this instance.

Returns:
The determinant
double det3x3 ( ) const

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

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

Parameters:
[in]otherthe matrix to compare to
[in]tolerancethe tolerance to use during the comparison
Returns:
True if the matrices are equivalent and false otherwise
bool isSingular ( ) const

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]rowindex of the row to access
[in]colindex 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]rowindex of the row to access
Returns:
  • double array containing the values of the specified row
const char * className ( ) [static]

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]factorScalar to multiply this matrix by.
[in]rightThis 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]osthe ostream to print to
[in]mthe 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