#include <MTransformationMatrix.h>
An MTransformationMatrix allows the manipulation of the individual transformation components (eg scale, rotation, shear, etc) of a four by four transformation matrix.
The transformation in the node is represented as a 4x4 transformation matrix. This class allows access to the whole matrix, or the individual components (eg scale, rotation, shear, etc) of the transformation. This breakdown provides animators fine control over the animation of these parameters. Therefore, it is necessary to describe the order in which these attributes are applied to build the final matrix attribute.
A transformation matrix is composed of the following components:
The matrices are post-multiplied in Maya. For example, to transform a point P from object-space to world-space (P') you would need to post-multiply by the worldMatrix. (P' = P x WM)
The transformation matrix is then constructed as follows:
-1 -1 [Sp]x[S]x[Sh]x[Sp]x[St]x[Rp]x[Ro]x[R]x[Rp]x[Rt]x[T]
where 'x' denotes matrix multiplication and '-1' denotes matrix inversion
Sp = | 1 0 0 0 | St = | 1 0 0 0 | | 0 1 0 0 | | 0 1 0 0 | | 0 0 1 0 | | 0 0 1 0 | | spx spy spz 1 | | sptx spty sptz 1 | S = | sx 0 0 0 | Sh = | 1 0 0 0 | | 0 sy 0 0 | | shxy 1 0 0 | | 0 0 sz 0 | | shxz shyz 1 0 | | 0 0 0 1 | | 0 0 0 1 | Rp = | 1 0 0 0 | Rt = | 1 0 0 0 | | 0 1 0 0 | | 0 1 0 0 | | 0 0 1 0 | | 0 0 1 0 | | rpx rpy rpz 1 | | rptx rpty rptz 1 | Ro = AX * AY * AZ AX = | 1 0 0 0 | AY = | cy 0 -sy 0 | | 0 cx sx 0 | | 0 1 0 0 | | 0 -sx cx 0 | | sy 0 cy 0 | | 0 0 0 1 | | 0 0 0 1 | AZ = | cz sz 0 0 | sx = sin(rax), cx = cos(rax) | -sz cz 0 0 | sy = sin(ray), cx = cos(ray) | 0 0 1 0 | sz = sin(raz), cz = cos(raz) | 0 0 0 1 | R = RX * RY * RZ (Note: order is determined by rotateOrder) RX = | 1 0 0 0 | RY = | cy 0 -sy 0 | | 0 cx sx 0 | | 0 1 0 0 | | 0 -sx cx 0 | | sy 0 cy 0 | | 0 0 0 1 | | 0 0 0 1 | RZ = | cz sz 0 0 | sx = sin(rx), cx = cos(rx) | -sz cz 0 0 | sy = sin(ry), cx = cos(ry) | 0 0 1 0 | sz = sin(rz), cz = cos(rz) | 0 0 0 1 | T = | 1 0 0 0 | | 0 1 0 0 | | 0 0 1 0 | | tx ty tz 1 |
MTransformationMatrix::~MTransformationMatrix | ( | ) |
Class Destructor.
MTransformationMatrix::MTransformationMatrix | ( | ) |
Class Constructor.
MTransformationMatrix::MTransformationMatrix | ( | const MTransformationMatrix & | src | ) |
Class Copy Constructor.
[in] | src | transform matrix to be copied |
MTransformationMatrix::MTransformationMatrix | ( | const MMatrix & | src | ) |
Class Constructor.
[in] | src | matrix to be copied |
MTransformationMatrix & MTransformationMatrix::operator= | ( | const MTransformationMatrix & | src | ) |
Copy operator.
[in] | src | transform matrix to be copied |
MTransformationMatrix & MTransformationMatrix::operator= | ( | const MMatrix & | src | ) |
Copy operator.
[in] | src | matrix to be copied |
MMatrix MTransformationMatrix::asMatrix | ( | ) | const |
Returns the four by four matrix that describes this transformation
MMatrix MTransformationMatrix::asMatrix | ( | double | percent | ) | const |
Returns a matrix that represents the specified percentage of this transformation matrix.
[in] | percent | percent of the transformation to return |
MMatrix MTransformationMatrix::asMatrixInverse | ( | ) | const |
Returns the inverse of the four by four matrix that describes this transformation.
MMatrix MTransformationMatrix::asScaleMatrix | ( | ) | const |
Returns scale space matrix. The scale space matrix takes points from object space to the space immediately following scale and shear transformations.
MMatrix MTransformationMatrix::asRotateMatrix | ( | ) | const |
Returns rotate space matrix. The rotate space matrix takes points from object space to the space immediately following the scale/shear/rotation transformations.
MStatus MTransformationMatrix::getScale | ( | double | scale[3], | |
MSpace::Space | space | |||
) | const |
Get the scale component of the transformation matrix.
[out] | scale | storage for the scale component |
[in] | space | transform space in which to get the scale |
MStatus MTransformationMatrix::setScale | ( | const double | scale[3], | |
MSpace::Space | space | |||
) |
Set the scale component of the transformation matrix.
[in] | scale | new scale component |
[in] | space | transform space in which to perform the scale |
MStatus MTransformationMatrix::addScale | ( | const double | scale[3], | |
MSpace::Space | space | |||
) |
Add to the scale component by scaling relative to the existing transformation.
[in] | scale | relative value to scale by |
[in] | space | transform space in which to perform the scale |
MQuaternion MTransformationMatrix::rotation | ( | ) | const |
Returns the rotation component of the transformation matrix as a quaternion. The rotation is returned in MSpace::kTransform space.
MTransformationMatrix & MTransformationMatrix::rotateTo | ( | const MQuaternion & | q | ) |
Sets the rotation component of the transformation matrix using a quaternion. The rotation is performed in MSpace::kTransform space.
[in] | q | the quaternion to which the rotation component of the transformation matrix should be set |
MTransformationMatrix & MTransformationMatrix::rotateBy | ( | const MQuaternion & | q, | |
MSpace::Space | space, | |||
MStatus * | ReturnStatus = NULL | |||
) |
Adds to the rotation component of the rotation matrix by rotating relative to the existing transformation using a quaternion. The only valid transformation spaces for this method are MSpace::kTransform and MSpace::kPreTransform/MSpacekObject. All other spaces are treated as being equivalent to MSpace::kTransform.
[in] | q | the quaternion that indicates how much the transformation matrix will be rotated by |
[in] | space | the space in which the rotation is performed |
[out] | ReturnStatus | return status |
MEulerRotation MTransformationMatrix::eulerRotation | ( | ) | const |
Returns the rotation component of the transformation matrix as an euler rotation.
MTransformationMatrix & MTransformationMatrix::rotateTo | ( | const MEulerRotation & | e | ) |
Sets the rotation component of the transformation matrix using an euler rotation. The rotation is performed in MSpace::kTransform space.
[in] | e | the euler rotation to which the rotation component of the transformation matrix should be set |
MTransformationMatrix & MTransformationMatrix::rotateBy | ( | const MEulerRotation & | e, | |
MSpace::Space | space, | |||
MStatus * | ReturnStatus = NULL | |||
) |
Adds to the rotation component of the rotation matrix by rotating relative to the existing transformation using an euler rotation. The only valid transformation spaces for this method are MSpace::kTransform and MSpace::kPreTransform/MSpacekObject. All other spaces are treated as being equivalent to MSpace::kTransform.
[in] | e | the euler rotation that indicates how much the transformation matrix will be rotated by |
[in] | space | the space in which the rotation is performed |
[out] | ReturnStatus | return status |
MStatus MTransformationMatrix::getRotationQuaternion | ( | double & | x, | |
double & | y, | |||
double & | z, | |||
double & | w | |||
) | const |
Get the rotation component of the transformation matrix as a quaternion. The rotation is retrieved in MSpace::kTransform space.
[out] | x | storage for the x component of the quaternion |
[out] | y | storage for the y component of the quaternion |
[out] | z | storage for the z component of the quaternion |
[out] | w | storage for the w component of the quaternion |
MStatus MTransformationMatrix::setRotationQuaternion | ( | double | x, | |
double | y, | |||
double | z, | |||
double | w | |||
) |
Set the rotation component of the transformation matrix using a quaternion. The rotation is set in MSpace::kTransform space.
[in] | x | x component of new quaternion |
[in] | y | y component of new quaternion |
[in] | z | z component of new quaternion |
[in] | w | w component of new quaternion |
MStatus MTransformationMatrix::addRotationQuaternion | ( | double | x, | |
double | y, | |||
double | z, | |||
double | w, | |||
MSpace::Space | space | |||
) |
Add to the rotation component by rotating relative to the existing transformation. Rotation is a quaternion. The only valid transformation spaces for this method are MSpace::kTransform and MSpace::kPreTransform. All other spaces are treated as being equivalent to MSpace::kTransform.
[in] | x | x component of quaternion |
[in] | y | y component of quaternion |
[in] | z | z component of quaternion |
[in] | w | w component of quaternion |
MStatus MTransformationMatrix::getRotation | ( | double | rot[3], | |
MTransformationMatrix::RotationOrder & | order | |||
) | const |
Get the rotation component of the transformation matrix in radians. The rotation is retrieved in MSpace::kTransform space.
[out] | rot | storage for the rotation in radians |
[in] | order | storage for the rotation order |
MStatus MTransformationMatrix::setRotation | ( | const double | rot[3], | |
MTransformationMatrix::RotationOrder | order | |||
) |
Set the rotation component of the transformation matrix. The rotation is set in MSpace::kTransform space.
[in] | rot | new rotation component in radians |
[in] | order | order in which to apply rotations |
MStatus MTransformationMatrix::addRotation | ( | const double | rot[3], | |
MTransformationMatrix::RotationOrder | order, | |||
MSpace::Space | space | |||
) |
Add to the rotation component by rotating relative to the existing transformation. The only valid transformation spaces for this method are MSpace::kTransform and MSpace::kPreTransform. All other spaces are treated as being equivalent to MSpace::kTransform.
[in] | rot | relative value to rotate by |
[in] | space | transform space in which to perform the rotation |
MTransformationMatrix::RotationOrder MTransformationMatrix::rotationOrder | ( | MStatus * | ReturnStatus = NULL |
) | const |
Returns the rotation order for the transform matrix. That is the order in which the Euler angles are applied to create the end rotation.
[out] | ReturnStatus | return status |
MStatus MTransformationMatrix::reorderRotation | ( | RotationOrder & | order | ) |
Reorders the x, y, and z components of the rotation of this transform. The overall rotation will remain the same. This operation is not unique, so spin information will be lost.
[in] | order | new order of the rotations |
Sets the rotation given an axis and a rotation about it.
[in] | axis | axis to rotate about |
[in] | rotation | rotation in radians |
MQuaternion MTransformationMatrix::rotationOrientation | ( | ) | const |
Returns the rotation orientation for the transformation matrix. The rotation orientation is the rotation that orients the local rotation space. The rotation is returned in MSpace::kTransform space.
MTransformationMatrix & MTransformationMatrix::setRotationOrientation | ( | const MQuaternion & | q | ) |
Sets the rotation orientation for the transformation matrix. The rotation orientation is the rotation that orients the local rotation space. The rotation is set in MSpace::kTransform space.
MVector MTransformationMatrix::getTranslation | ( | MSpace::Space | space, | |
MStatus * | ReturnStatus = NULL | |||
) | const |
Returns the translation component of the translation as a vector in centimeters.
[in] | space | space in which to perform the translation |
[out] | ReturnStatus | return status |
MStatus MTransformationMatrix::setTranslation | ( | const MVector & | vector, | |
MSpace::Space | space | |||
) |
Set the translation component of the transformation matrix in centimeters.
[in] | vector | new translation component in centimeters. |
[in] | space | transform space in which to perform the translation |
MStatus MTransformationMatrix::addTranslation | ( | const MVector & | vector, | |
MSpace::Space | space | |||
) |
Add to the translation component by translating relative to the existing transformation.
[in] | vector | relative value to translate by |
[in] | space | transform space in which to perform the scale |
MStatus MTransformationMatrix::setShear | ( | const double | shear[3], | |
MSpace::Space | space | |||
) |
Set the shear component of the transformation matrix. The shear values represent (xy, xz, yx).
[in] | shear | new shear component |
[in] | space | transform space in which to perform the shear |
MStatus MTransformationMatrix::getShear | ( | double | shear[3], | |
MSpace::Space | space | |||
) | const |
Get the shear component of the transformation matrix.
[out] | shear | Shear. |
[in] | space | Transform space in which to get the shear. |
MStatus MTransformationMatrix::addShear | ( | const double | shear[3], | |
MSpace::Space | space | |||
) |
Add to the shear component by shearing relative to the existing transformation.
[in] | shear | relative value to shear by |
[in] | space | transform space in which to perform the shear |
MPoint MTransformationMatrix::scalePivot | ( | MSpace::Space | space, | |
MStatus * | ReturnStatus = NULL | |||
) | const |
Returns the pivot around which the scale is applied.
[in] | space | space in which to get the pivot |
[out] | ReturnStatus | return status |
MStatus MTransformationMatrix::setScalePivot | ( | const MPoint & | point, | |
MSpace::Space | space, | |||
bool | balance | |||
) |
Set the pivot around which the scale is applied.
If balance if true, then the overall transformation matrix will not change and a compensating transformation will be added to the scale transformation to achieve this.
[in] | point | new scale pivot |
[in] | space | transform space in which to set the scale pivot |
[in] | balance | whether to balance the matrix |
MVector MTransformationMatrix::scalePivotTranslation | ( | MSpace::Space | space, | |
MStatus * | ReturnStatus = NULL | |||
) | const |
Returns the scale pivot translation. This is the translation that is used to compensate for the movement of the scale pivot.
[in] | space | space in which to get the pivot |
[out] | ReturnStatus | return status |
MStatus MTransformationMatrix::setScalePivotTranslation | ( | const MVector & | vector, | |
MSpace::Space | space | |||
) |
Set the pivot translation. This component is used to preserve existing scale transformations when moving pivot. This method will only be useful to advanced users.
[in] | vector | new scale pivot translation |
[in] | space | transform space in which to set the scale translation |
MPoint MTransformationMatrix::rotatePivot | ( | MSpace::Space | space, | |
MStatus * | ReturnStatus = NULL | |||
) | const |
Returns the pivot around which the rotation is applied.
[in] | space | space in which to get the pivot |
[out] | ReturnStatus | return status |
MStatus MTransformationMatrix::setRotatePivot | ( | const MPoint & | point, | |
MSpace::Space | space, | |||
bool | balance | |||
) |
Set the pivot around which the rotation is applied.
If balance if true, then the overall transformation matrix will not change and a compensating transformation will be added to the rotation transformation to achieve this.
[in] | point | new rotation pivot |
[in] | space | transform space in which to set the pivot |
[in] | balance | whether to balance the matrix |
MVector MTransformationMatrix::rotatePivotTranslation | ( | MSpace::Space | space, | |
MStatus * | ReturnStatus = NULL | |||
) | const |
Returns the rotation pivot translation. This is the translation that is used to compensate for the movement of the rotation pivot.
[in] | space | space in which to get the pivot translation |
[out] | ReturnStatus | return status |
MStatus MTransformationMatrix::setRotatePivotTranslation | ( | const MVector & | vector, | |
MSpace::Space | space | |||
) |
Set the pivot translation. This component is used to preserve existing transformations when moving pivot. This method will only be useful to advanced users.
[in] | vector | new rotation pivot translation |
[in] | space | transform space in which to set the rotation translation |
bool MTransformationMatrix::isEquivalent | ( | const MTransformationMatrix & | other, | |
double | tol = 1.0e-10 | |||
) | const |
Returns true if this transform matrix is equivalent to the one passed in within a certain tolerance.
[in] | other | transform matrix to test against |
[in] | tol | tolerance to test using |
bool MTransformationMatrix::operator== | ( | const MTransformationMatrix & | other | ) | const |
Equality operator.
[in] | other | transform matrix to test against |
bool MTransformationMatrix::operator!= | ( | const MTransformationMatrix & | other | ) | const |
Inequality operator.
[in] | other | transform matrix to test against |
MStatus MTransformationMatrix::getRotation | ( | double | rot[3], | |
MTransformationMatrix::RotationOrder & | order, | |||
MSpace::Space | space | |||
) | const |
This method is obsolete.
Get the rotation component in radians of the transformation matrix.
[out] | rot | storage for the rotation in radians |
[out] | order | storage for the rotation order |
[in] | space | transform space in which to get the rotation |
MStatus MTransformationMatrix::setRotation | ( | const double | rot[3], | |
MTransformationMatrix::RotationOrder | order, | |||
MSpace::Space | space | |||
) |
This method is obsolete.
Set the rotation component of the transformation matrix.
[in] | rot | new rotation component |
[in] | order | order in which to apply rotations |
[in] | space | transform space in which to perform the rotation |
MStatus MTransformationMatrix::getRotationQuaternion | ( | double & | x, | |
double & | y, | |||
double & | z, | |||
double & | w, | |||
MSpace::Space | space | |||
) | const |
This method is obsolete.
Get the rotation component of the transformation matrix as a quaternion.
[out] | x | storage for the x component of the quaternion |
[out] | y | storage for the y component of the quaternion |
[out] | z | storage for the z component of the quaternion |
[out] | w | storage for the w component of the quaternion |
[in] | space | transform space in which to get the rotation |
MStatus MTransformationMatrix::setRotationQuaternion | ( | double | x, | |
double | y, | |||
double | z, | |||
double | w, | |||
MSpace::Space | space | |||
) |
This method is obsolete.
Set the rotation component of the transformation matrix using a quaternion.
[in] | x | x component of new quaternion |
[in] | y | y component of new quaternion |
[in] | z | z component of new quaternion |
[in] | w | w component of new quaternion |
[in] | space | transform space in which to perform the rotation |
MVector MTransformationMatrix::translation | ( | MSpace::Space | space, | |
MStatus * | ReturnStatus = NULL | |||
) | const |
This method is obsolete.
[in] | space | space in which to perform the translation |
[out] | ReturnStatus | return status |
Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. | Generated with 1.5.6 |