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: カスタム トランスフォームの概要, スレッド化と 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

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[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

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

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

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