MMatrix Class ReferenceOpenMaya - 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:

#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)
Initialize the instance with a 4x4 matrix of doubles.
MMatrix (const float m)
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) const
Fill a 4x4 matrix of doubles with the elements from the instance.
MStatus get (float dest) 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
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.
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 
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] src Matrix to copy data from
 MMatrix ( const double src_matrix )

Initialize the instance with a 4x4 matrix of doubles.

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

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

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:
 MStatus get ( float dest ) const

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

Compute and return the transpose of this instance.

Returns:
The transposed matrix
Examples:
 MMatrix & setToIdentity ( )

Set this instance to the 4x4 identity matrix.

Returns:
This matrix.
Examples:
 MMatrix & setToProduct ( const MMatrix & left, const MMatrix & right )

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:
Returns:
This matrix.
 MMatrix operator+ ( const MMatrix & right ) const

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

Compute and return the inverse of this instance.

Returns:
The inverted matrix
Examples:

Compute and return the adjoint of this instance.

Returns:
 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] 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

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]

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