# MEulerRotation Class Reference [OpenMaya - API module for common classes]

`#include <MEulerRotation.h>`

Collaboration diagram for MEulerRotation: [legend]

## Detailed Description

Euler Rotation Math.

This class provides methods for working with euler angle rotations. Euler angles are described by rotations in radians around the x, y, and z axes, and the order in which those rotations occur.

Examples:

## Public Types

enum  RotationOrder {
kXYZ, kYZX, kZXY, kXZY,
kYXZ, kZYX
}
Valid rotaton orders. More...

## Public Member Functions

MEulerRotation ()
MEulerRotation (const MEulerRotation &src)
MEulerRotation (const MVector &v, RotationOrder ord=kXYZ)
MEulerRotation (double xx, double yy, double zz, RotationOrder ord=kXYZ)
~MEulerRotation ()
MEulerRotationoperator= (const MEulerRotation &src)
MEulerRotationoperator= (const MQuaternion &q)
MEulerRotationoperator= (const MMatrix &m)
MEulerRotationoperator= (const MVector &v)
MEulerRotationsetValue (const MVector &v, RotationOrder ord=kXYZ)
MEulerRotationsetValue (double xx, double yy, double zz, RotationOrder ord=kXYZ)
MQuaternion asQuaternion () const
MMatrix asMatrix () const
MVector asVector () const
double operator[] (unsigned int i) const
MEulerRotation operator+ (const MEulerRotation &other) const
MEulerRotationoperator+= (const MEulerRotation &other)
MEulerRotation operator- (const MEulerRotation &other) const
MEulerRotationoperator-= (const MEulerRotation &other)
MEulerRotation operator- () const
MEulerRotation operator* (const MEulerRotation &other) const
MEulerRotation operator* (const MQuaternion &other) const
MEulerRotation operator* (double other) const
MEulerRotationoperator*= (const MEulerRotation &other)
MEulerRotationoperator*= (const MQuaternion &other)
MEulerRotationoperator*= (double other)
bool operator== (const MEulerRotation &other) const
bool operator!= (const MEulerRotation &other) const
bool isEquivalent (const MEulerRotation &other, double tolerance=1.0e-10) const
bool isZero (double tolerance=1.0e-10) const
MEulerRotationincrementalRotateBy (const MVector &axis, double angle)
MEulerRotation inverse () const
MEulerRotationinvertIt ()
MEulerRotation reorder (RotationOrder ord) const
MEulerRotationreorderIt (RotationOrder ord)
MEulerRotation bound () const
MEulerRotationboundIt (const MEulerRotation &src)
MEulerRotationboundIt ()
MEulerRotation alternateSolution () const
MEulerRotationsetToAlternateSolution (const MEulerRotation &src)
MEulerRotationsetToAlternateSolution ()
MEulerRotation closestSolution (const MEulerRotation &dst) const
MEulerRotationsetToClosestSolution (const MEulerRotation &src, const MEulerRotation &dst)
MEulerRotationsetToClosestSolution (const MEulerRotation &dst)
MEulerRotation closestCut (const MEulerRotation &dst) const
MEulerRotationsetToClosestCut (const MEulerRotation &src, const MEulerRotation &dst)
MEulerRotationsetToClosestCut (const MEulerRotation &dst)
double & operator[] (unsigned int i)
NO SCRIPT SUPPORT.

## Static Public Member Functions

static MEulerRotation decompose (const MMatrix &matrix, RotationOrder ord)
static MEulerRotation bound (const MEulerRotation &src)
NO SCRIPT SUPPORT.
static MEulerRotation alternateSolution (const MEulerRotation &src)
NO SCRIPT SUPPORT.
static MEulerRotation closestSolution (const MEulerRotation &src, const MEulerRotation &dst)
NO SCRIPT SUPPORT.
static MEulerRotation closestCut (const MEulerRotation &src, const MEulerRotation &dst)
NO SCRIPT SUPPORT.

## Public Attributes

double x
The x component of the euler rotation in radians.
double y
The y component of the euler rotation in radians.
double z
The z component of the euler rotation in radians.
RotationOrder order
The rotation order of the euler rotation.

## Static Public Attributes

static const MEulerRotation identity
The euler rotation identity. The rotation order is XYZ.

## Friends

OPENMAYA_EXPORT MEulerRotation operator* (double scale, const MEulerRotation &other)
NO SCRIPT SUPPORT.
OPENMAYA_EXPORT std::ostream & operator<< (std::ostream &os, const MEulerRotation &rotation)
NO SCRIPT SUPPORT.

## Member Enumeration Documentation

Valid rotaton orders.

Enumerator:
 kXYZ kYZX kZXY kXZY kYXZ kZYX

## Constructor & Destructor Documentation

 MEulerRotation::MEulerRotation ( )

The default class constructor. The rotation order is set to XYZ.

 MEulerRotation::MEulerRotation ( const MEulerRotation & src )

The copy constructor. Creates a new euler rotation and initializes it to the same values as the given euler rotation.

Parameters:
 [in] src the euler rotation to copy

 MEulerRotation::MEulerRotation ( const MVector & v, MEulerRotation::RotationOrder ord = `kXYZ` )

Class constructor. Construct an euler rotation from a vector with the given rotation order.

Parameters:
 [in] v vector from which to set the x, y, and z rotation components [in] ord the rotation order; the default rotation order is XYZ

 MEulerRotation::MEulerRotation ( double xx, double yy, double zz, MEulerRotation::RotationOrder ord = `kXYZ` )

Class constructor. Initializes the euler rotation with the explicit x, y, z, and rotation order values provided as arguments.

Parameters:
 [in] xx the x component of the euler rotation [in] yy the y component of the euler rotation [in] zz the z component of the euler rotation [in] ord the rotation order of the euler rotation; the default rotation order is XYZ

 MEulerRotation::~MEulerRotation ( )

Class destructor.

## Member Function Documentation

 MEulerRotation & MEulerRotation::operator= ( const MEulerRotation & src )

The assignment operator.

Parameters:
 [in] src the source euler rotation
Returns:
A reference to the euler rotation that has been assigned to the source euler rotation

 MEulerRotation & MEulerRotation::operator= ( const MQuaternion & q )

The assignment operator.

Parameters:
 [in] q the source quaternion
Returns:
A reference to the euler rotation that has been assigned to the quaternion

 MEulerRotation & MEulerRotation::operator= ( const MMatrix & m )

Convert the given 4X4 homogeneous rotation matrix to a euler rotation.

Parameters:
 [in] m the matrix to be converted to a euler rotation
Returns:
A reference to the euler rotation that has been converted from the rotation matrix

 MEulerRotation & MEulerRotation::operator= ( const MVector & v )

The assignment operator.

Parameters:
 [in] v the source vector from which the x, y, and z rotation components are set
Returns:
A reference to the euler rotation that has been assigned to the source vector

 MEulerRotation & MEulerRotation::setValue ( const MVector & v, MEulerRotation::RotationOrder ord = `kXYZ` )

Sets the euler rotation to the values contained in the vector and with the specified rotation order.

Parameters:
 [in] v vector from which to set the x, y, and z rotation components [in] ord the rotation order; the default rotation order is XYZ
Returns:
A reference to the euler rotation whose value has been set

 MEulerRotation & MEulerRotation::setValue ( double xx, double yy, double zz, MEulerRotation::RotationOrder ord = `kXYZ` )

Sets the euler rotation to the x, y, and z rotation components with the specified rotation order.

Parameters:
 [in] xx the x component of the rotation [in] yy the y component of the rotation [in] zz the z component of the rotation [in] ord the rotation order; the default rotation order is XYZ
Returns:
A reference to the euler rotation whose value has been set

 MQuaternion MEulerRotation::asQuaternion ( ) const

Converts an euler rotation to a quaternion.

Returns:
The quaternion that has been casted from the euler rotation

 MMatrix MEulerRotation::asMatrix ( ) const

Converts an euler rotation to a rotation matrix.

Returns:
The rotation matrix that has been casted from the euler rotation

 MVector MEulerRotation::asVector ( ) const

Converts an euler rotation to a vector. The rotation order component is dropped.

Returns:
The vector that has been casted from the euler rotation

 double MEulerRotation::operator[] ( unsigned int i ) const

The index operator. If its argument is 0 it will return the x component of the euler rotation. If its argument is 1 it will return the y component of the euler rotation. If its argument is 2 it will return the z component of the euler rotation.

Parameters:
 [in] i value indicating which component to return
Returns:
The component of the euler rotation corresponding to the index

 MEulerRotation MEulerRotation::operator+ ( const MEulerRotation & other ) const

Parameters:
 [in] other the euler rotation to be added to this euler rotation
Returns:
The sum of the two euler rotations

 MEulerRotation & MEulerRotation::operator+= ( const MEulerRotation & other )

The in place euler rotation addition operator.

Parameters:
 [in] other the euler rotation to be added with this euler rotation
Returns:
A reference the euler rotation which has been added to the other euler rotation

 MEulerRotation MEulerRotation::operator- ( const MEulerRotation & other ) const

The euler rotation subtraction operator.

Parameters:
 [in] other the euler rotation to be subtracted from this euler rotation
Returns:
The euler rotation that results from the subtraction

 MEulerRotation & MEulerRotation::operator-= ( const MEulerRotation & other )

The in place euler rotation subtraction operator.

Parameters:
 [in] other the euler rotation to be subtracted from this euler rotation
Returns:
A reference the euler rotation which has had the other euler rotation subtracted from it

 MEulerRotation MEulerRotation::operator- ( ) const

The unary minus operator. Negates the value of each of the x, y, and z components of the euler rotation. The order remains the same.

Returns:
Euler rotation that results from the negation

 MEulerRotation MEulerRotation::operator* ( const MEulerRotation & other ) const

The euler rotation multiplication operator.

Parameters:
 [in] other the euler rotation to be multiplied with this euler rotation
Returns:
The product of the two euler rotations

 MEulerRotation MEulerRotation::operator* ( const MQuaternion & other ) const

This quaternion multiplication operator.

Parameters:
 [in] other the quaternion to be multiplied with this euler rotation
Returns:
The product of the euler rotation and the quaternion

 MEulerRotation MEulerRotation::operator* ( double other ) const

This scalar multiplication operator.

Parameters:
 [in] other the scalar value to be multiplied with this euler rotation
Returns:
The product of the euler rotation and the scalar value

 MEulerRotation & MEulerRotation::operator*= ( const MEulerRotation & other )

The in place euler rotation multiplication operator.

Parameters:
 [in] other the euler rotation to be multiplied with this euler rotation
Returns:
A reference to the euler rotation which has been multiplied with the other euler rotation

 MEulerRotation & MEulerRotation::operator*= ( const MQuaternion & other )

The in place quaternion multiplication operator.

Parameters:
 [in] other the quaternion to be multiplied with this euler rotation
Returns:
A reference to the euler rotation which has been multiplied with the quaternion

 MEulerRotation & MEulerRotation::operator*= ( double other )

The in place scalar multiplication operator.

Parameters:
 [in] other the double to be multiplied with this euler rotation
Returns:
A reference to the euler rotation which has been multiplied with the double

 bool MEulerRotation::operator== ( const MEulerRotation & other ) const

The euler rotation equality operator.

Parameters:
 [in] other the euler rotation to be compared with this euler rotation
Returns:
• true the euler rotations are identical
• false the euler rotations are not identical

 bool MEulerRotation::operator!= ( const MEulerRotation & other ) const

The euler rotation inequality operator.

Parameters:
 [in] other the euler rotation to be compared with this euler rotation
Returns:
• true the euler rotations are not identical
• false the euler rotations are identical

 bool MEulerRotation::isEquivalent ( const MEulerRotation & other, double tolerance = `1.0e-10` ) const

This method returns true if this euler rotation is equivalent, within some given tolerance, to the other euler rotation.

'tolerance' defaults to kEulerRotationEpsilon which is 1.0e-10

Parameters:
 [in] other the euler rotation to be compared with this euler rotation [in] tolerance the amount of variation allowed for equivalency
Returns:
• true the euler rotations are equivalent
• false the euler rotations are not equivalent

 bool MEulerRotation::isZero ( double tolerance = `1.0e-10` ) const

This method returns true if this euler rotation is zero, within some given tolerance.

'tolerance' defaults to kEulerRotationEpsilon which is 1.0e-10

Parameters:
 [in] tolerance the amount of variation allowed for equivalency to zero
Returns:
• true the rotation is zero
• false the rotation is not zero

 MEulerRotation & MEulerRotation::incrementalRotateBy ( const MVector & axis, double angle )

Perform an incremental rotation by the specified axis and angle. The rotation is broken down and performed in smaller steps so that the angles update properly.

Parameters:
 [in] axis the axis to rotate around [in] angle the angle by which to rotate around the axis
Returns:
A reference to the euler rotation that has been incrementally rotated

 MEulerRotation MEulerRotation::inverse ( ) const

Returns the inverse of this euler rotation. The rotation order will be reversed.

Returns:
Euler rotation that is the inverse of this euler rotation

 MEulerRotation & MEulerRotation::invertIt ( )

Performs an in place inversion of this euler rotation. The rotation order will be reversed.

Returns:
A reference to the euler rotation that has been inverted

 MEulerRotation MEulerRotation::reorder ( MEulerRotation::RotationOrder ord ) const

Returns the reordering of this euler rotation, such that the euler rotation will have the specified rotation order.

Parameters:
 [in] ord the new rotation order of the euler rotation
Returns:
Euler rotation that is the reordering of this euler rotation

 MEulerRotation & MEulerRotation::reorderIt ( MEulerRotation::RotationOrder ord )

Performs an in place reordering of this euler rotation, such that the euler rotation will have the specified rotation order.

Parameters:
 [in] ord the new rotation order of the euler rotation
Returns:
A reference to the euler rotation that has been reordered

 MEulerRotation MEulerRotation::bound ( ) const

Returns the result of bounding this rotation to be within +/- PI. Bounding a rotation to be within +/- PI is defined to be the result of offsetting the rotation by +/- 2nPI (term by term) such that the offset is within +/- PI.

Returns:
The euler rotation that results from bounding this euler rotation

 MEulerRotation & MEulerRotation::boundIt ( const MEulerRotation & src )

Sets this euler rotation to be the input rotation that has been bound to be within +/- PI. Bounding a rotation to be within +/- PI is defined to be the result of offsetting the rotation by +/- 2nPI (term by term) such that the offset is within +/- PI.

Parameters:
 [in] src the input rotation that will be bound
Returns:
A reference to the euler rotation that has been set to the bound input rotation

 MEulerRotation & MEulerRotation::boundIt ( )

Bounds this rotation to be within +/- PI. Bounding a rotation to be within +/- PI is defined to be the result of offsetting the rotation by +/- 2nPI (term by term) such that the offset is within +/- PI.

Returns:
A reference to the euler rotation that has been bound

 MEulerRotation MEulerRotation::alternateSolution ( ) const

Returns an alternate solution to this rotation. The resulting rotation will be bound between +/- PI, and the rotation order will remain unchanged.

Returns:
An alternate solution to this rotation

 MEulerRotation & MEulerRotation::setToAlternateSolution ( const MEulerRotation & src )

Sets this euler rotation to an alternate solution of the input rotation. The resulting rotation will be bound between +/- PI, and the rotation order will remain unchanged.

Parameters:
 [in] src the rotation to compute an alternate solution to
Returns:
A reference to the euler rotation that has been set to an alternate solution

 MEulerRotation & MEulerRotation::setToAlternateSolution ( )

Sets this euler rotation to an alternate solution of this rotation. The resulting rotation will be bound between +/- PI, and the rotation order will remain unchanged.

Returns:
A reference to the euler rotation that has been set to an alternate solution

 MEulerRotation MEulerRotation::closestSolution ( const MEulerRotation & dst ) const

Returns the euler rotation that is the closest solution to the "dst" euler rotation.

Parameters:
 [in] dst the euler rotation to which the solution should be closest
Returns:
The closest solution to the "dst" rotation

 MEulerRotation & MEulerRotation::setToClosestSolution ( const MEulerRotation & src, const MEulerRotation & dst )

Sets this euler rotation to the euler rotation that is the closest solution of the "src" euler rotation to the "dst" euler rotation.

Parameters:
 [in] src the euler rotation whose closest solution will be calculated [in] dst the euler rotation to which the solution should be closest
Returns:
A reference to the euler rotation that has been set to the closest solution

 MEulerRotation & MEulerRotation::setToClosestSolution ( const MEulerRotation & dst )

Sets this euler rotation to the euler rotation that is the closest solution to the "dst" euler rotation.

Parameters:
 [in] dst the euler rotation to which the solution should be closest
Returns:
A reference to the euler rotation that has been set to the closest solution

 MEulerRotation MEulerRotation::closestCut ( const MEulerRotation & dst ) const

Returns the closest cut of this rotation to "dst". The closest cut of rotation A to rotation B is defined to be the rotation that is +/- 2nPI to rotation A (term by term) and within +/- PI to rotation B.

Parameters:
 [in] dst the range of the closest cut
Returns:
The closest cut of this rotation

 MEulerRotation & MEulerRotation::setToClosestCut ( const MEulerRotation & src, const MEulerRotation & dst )

Sets this rotation to be the closest cut of "src" to "dst". The closest cut of rotation A to rotation B is defined to be the rotation that is +/- 2nPI to rotation A (term by term) and within +/- PI to rotation B.

Parameters:
 [in] src the euler rotation whose terms will be offset by +/- 2nPI [in] dst the range of the closest cut
Returns:
A reference to the euler rotation that has been set to the closest cut

 MEulerRotation & MEulerRotation::setToClosestCut ( const MEulerRotation & dst )

Sets this rotation to be the closest cut to "dst". The closest cut of rotation A to rotation B is defined to be the rotation that is +/- 2nPI to rotation A (term by term) and within +/- PI to rotation B.

Parameters:
 [in] dst the range of the closest cut
Returns:
A reference to the euler rotation that has been set to the closest cut

 MEulerRotation MEulerRotation::decompose ( const MMatrix & matrix, MEulerRotation::RotationOrder ord ) ` [static]`

Decompose a rotation matrix into the desired euler angles with the specified order.

Parameters:
 [in] matrix the matrix that will be decomposed into an euler rotation with the specified order [in] ord the order which the euler rotation will have
Returns:
The euler rotation that has been decomposed from the rotation matrix

 double & MEulerRotation::operator[] ( unsigned int i )

NO SCRIPT SUPPORT.

The index operator. If its argument is 0 it will return the x component of the euler rotation. If its argument is 1 it will return the y component of the euler rotation. If its argument is 2 it will return the z component of the euler rotation.

Parameters:
 [in] i value indicating which component to return
Returns:
A reference to the component of the euler rotation corresponding to the index

 MEulerRotation MEulerRotation::bound ( const MEulerRotation & src ) ` [static]`

NO SCRIPT SUPPORT.

Returns the euler rotation that bounds the input rotation to be within +/- PI. Bounding a rotation to be within +/- PI is defined to be the result of offsetting the rotation by +/- 2nPI (term by term) such that the offset is within +/- PI.

Parameters:
 [in] src the input rotation
Returns:
The euler rotation that bounds the input rotation

 MEulerRotation MEulerRotation::alternateSolution ( const MEulerRotation & src ) ` [static]`

NO SCRIPT SUPPORT.

Returns the euler rotation that is an alternate solution of the input rotation. The resulting rotation will be bound between +/- PI, and the rotation order will remain unchanged.

Parameters:
 [in] src the rotation to compute an alternate solution to
Returns:
The alternate solution to the input rotation

 MEulerRotation MEulerRotation::closestSolution ( const MEulerRotation & src, const MEulerRotation & dst ) ` [static]`

NO SCRIPT SUPPORT.

Returns the euler rotation that is the closest solution of the "src" euler rotation to the "dst" euler rotation.

Parameters:
 [in] src the euler rotation whose closest solution will be calculated [in] dst the euler rotation to which the solution should be closest
Returns:
The closest solution of "src" to "dst"

 MEulerRotation MEulerRotation::closestCut ( const MEulerRotation & src, const MEulerRotation & dst ) ` [static]`

NO SCRIPT SUPPORT.

Returns the euler rotation that is the closest cut of "src" to "dst". The closest cut of rotation A to rotation B is defined to be the rotation that is +/- 2nPI to rotation A (term by term) and within +/- PI to rotation B.

Parameters:
 [in] src the euler rotation whose terms will be offset by +/- 2nPI [in] dst the range of the closest cut
Returns:
The closest cut of "src" to "dst"

## Friends And Related Function Documentation

 OPENMAYA_EXPORT MEulerRotation operator* ( double scale, const MEulerRotation & other ) ` [friend]`

NO SCRIPT SUPPORT.

The multiplication operator that allows the scale to preceed the euler rotation.

Parameters:
 [in] scale the amount by which the euler rotation should be scaled [in] other the euler rotation to which the scale should be applied
Returns:
Euler rotation that is the result of scaling the other euler rotation

 OPENMAYA_EXPORT std::ostream& operator<< ( std::ostream & os, const MEulerRotation & rotation ) ` [friend]`

NO SCRIPT SUPPORT.

Print the contents of the given euler rotation on the given ostream. The format used is [order: order, x: x, y: y, z: z], where x, y, and z are in degrees.

Parameters:
 [in] os the ostream to print to [in] rotation the euler rotation to be printed x
Returns:
The ostream reference, os, provided as the first parameter.

 Autodesk® Maya® 2010 © 1997-2009 Autodesk, Inc. All rights reserved. Generated with 1.5.6