- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Examples

- Class List
- Class Hierarchy
- Class Members

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

# MVector Class Reference
OpenMaya - API module for common classes

This reference page is linked to from the following overview topics: Threading and Maya, Using the Maya Python API, Appendix C: Frequently asked questions.

Search for all occurrences

## Detailed Description

A vector math class for vectors of doubles.

This class provides access to Maya's internal vector math library allowing vectors to be handled easily, and in a manner compatible with internal Maya data structures.

All methods that query the vector are threadsafe, all methods that modify the vector are not threadsafe.

Examples:

  animInfoCmd.cpp, apiMeshCreator.cpp, apiMeshData.cpp, apiMeshShape.cpp, apiMeshShapeUI.cpp, apiSimpleShapeUI.cpp, buildRotationNode.cpp, cgfxShaderNode.cpp, closestPointCmd.cpp, closestPointOnCurveCmd.cpp, closestPointOnCurveNode.cpp, closestPointOnNurbsSurfaceCmd.cpp, closestTangentUAndDistance.cpp, closestTangentUAndDistance.h, componentScaleManip.cpp, customAttrManip.cpp, D3DResourceManager.cpp, D3DViewportRenderer.cpp, dynExprField.cpp, dynExprField.h, footPrintManip.cpp, geometryCacheBlockDVAData.cpp, geometryCacheBlockFVAData.cpp, geometrySurfaceConstraint.cpp, getPointAndNormal.cpp, getPointAndNormal.h, hairCollisionSolver.cpp, hwAnisotropicShader_NV20.cpp, hwDecalBumpShader_NV20.cpp, hwReflectBumpShader_NV20.cpp, hwRefractReflectShader_NV20.cpp, hwRefractReflectShader_NV20.h, hwToonShader_NV20.cpp, intersectOnNurbsSurfaceCmd.cpp, lepTranslator.cpp, lineManip.cpp, lineManipContainer.cpp, lineManipContainer.h, manipulatorMath.cpp, manipulatorMath.h, meshOpFtyAction.cpp, meshRemapTool.cpp, moveManip.cpp, moveNumericTool.cpp, moveTool.cpp, narrowPolyViewer.cpp, ownerEmitter.cpp, ownerEmitter.h, particleAttrNode.cpp, particleSystemInfoCmd.cpp, pfxInfoCmd.cpp, pointOnMeshCmd.cpp, pointOnMeshInfoNode.cpp, pointOnSubdNode.cpp, rockingTransform.cpp, rotateManip.cpp, sampleCmd.cpp, simpleEmitter.cpp, simpleEmitter.h, simpleFluidEmitter.cpp, simpleSolverNode.cpp, simpleSpring.cpp, simpleSpring.h, squareScaleManip.cpp, squareScaleManipContext.cpp, squareScaleManipContext.h, surfaceTwistCmd.cpp, sweptEmitter.cpp, sweptEmitter.h, swissArmyManip.cpp, torusField.cpp, torusField.h, and translateCmd.cpp.

`#include <MVector.h>`

List of all members.

## Public Types
enum | Axis { kXaxis, kYaxis, kZaxis, kWaxis }
| Axes. More...
## Public Member Functions
| MVector ()
| The default class constructor.
| MVector (const MVector &)
| The copy constructor.
| MVector (const MFloatPoint &)
| Class constructor.
| MVector (const MFloatVector &)
| Class constructor.
| MVector (const MPoint &)
| Class constructor.
| MVector (double xx, double yy, double zz=0.0)
| Class constructor.
| MVector (const double d[3])
| Class constructor.
| ~MVector ()
| Class destructor.
MVector & | operator= (const MVector &src)
| The assignment operator.
double | operator() (unsigned int i) const
| The index operator.
double | operator[] (unsigned int i) const
| The index operator.
MVector | operator^ (const MVector &right) const
| The cross product operator.
double | operator* (const MVector &right) const
| The dot product operator.
MVector & | operator/= (double scalar)
| The in place division operator.
MVector | operator/ (double scalar) const
| The division operator.
MVector & | operator*= (double scalar)
| The in place multiplication operator.
MVector | operator* (double scalar) const
| The multiplication operator.
MVector | operator+ (const MVector &other) const
| The vector addition operator.
MVector & | operator+= (const MVector &other)
| The in place vector addition operator.
MVector | operator- () const
| The unary minus operator.
MVector & | operator-= (const MVector &other)
| The in place vector subtraction operator.
MVector | operator- (const MVector &other) const
| The vector subtraction operator.
MVector | operator* (const MMatrix &) const
| The matrix multiplication operator.
MVector & | operator*= (const MMatrix &)
| The in place matrix multiplication operator.
bool | operator!= (const MVector &other) const
| The vector inequality operator.
bool | operator== (const MVector &other) const
| The vector equality operator.
MVector | rotateBy (double x, double y, double z, double w) const
| Returns the vector that represents the rotation of this vector by the given quaternion.
MVector | rotateBy (const double rotXYZ[3], MTransformationMatrix::RotationOrder order) const
| Returns the vector that represents the rotation of this vector by the given XYZ rotational values, applied according to the given rotation order.
MVector | rotateBy (MVector::Axis axis, const double angle) const
| Returns the vector that represents the rotation of this vector by the given angle about the given axis.
MVector | rotateBy (const MQuaternion &) const
| Returns the vector that represents the rotation of this vector by the given quaternion.
MVector | rotateBy (const MEulerRotation &) const
| Returns the vector that represents the rotation of this vector by the given euler rotation.
MQuaternion | rotateTo (const MVector &) const
| Returns the quaternion that represents the rotation of this vector into the other vector about their mutually perpendicular axis.
MStatus | get (double[3]) const
| Extracts the x, y, and z components of the vector and places them in elements 0, 1, and 2 of the double array passed.
double | length () const
| Return the length of the vector. Search for all occurrences
MVector | normal () const
| Return a normalized copy of this vector.
MStatus | normalize ()
| Performs an in place normalization of the vector.
double | angle (const MVector &other) const
| Returns the angle in radians between the vector and the one passed as an argument.
bool | isEquivalent (const MVector &other, double tolerance=MVector_kTol) const
| Returns true if the vector and the one passed as an argument are equal to each other within the specified tolerance.
bool | isParallel (const MVector &other, double tolerance=MVector_kTol) const
| Returns true if the current vector and the one passed as an argument are parallel to each other within the specified tolerance.
MVector | transformAsNormal (const MMatrix &matrix) const
| This method treats the vector as a normal vector and returns a transformed copy of the vector.
double & | operator() (unsigned int i)
| NO SCRIPT SUPPORT.
double & | operator[] (unsigned int i)
| NO SCRIPT SUPPORT.
## Public Attributes Search for all occurrences
double | x
| The x component of the vector. Search for all occurrences
double | y
| The y component of the vector. Search for all occurrences
double | z
| The z component of the vector.
## Static Public Attributes Search for all occurrences
static const MVector | zero
| The null vector. Search for all occurrences
static const MVector | one
| The vector <1,1,1> Search for all occurrences
static const MVector | xAxis
| Unit vector in the positive x direction. Search for all occurrences
static const MVector | yAxis
| Unit vector in the positive y direction. Search for all occurrences
static const MVector | zAxis
| Unit vector in the positive z direction. Search for all occurrences
static const MVector | xNegAxis
| Unit vector in the negative z direction. Search for all occurrences
static const MVector | yNegAxis
| Unit vector in the negative z direction. Search for all occurrences
static const MVector | zNegAxis
| Unit vector in the negative z direction.
## Friends
OPENMAYA_EXPORT MVector | operator* (const MMatrix &, const MVector &)
| NO SCRIPT SUPPORT.
OPENMAYA_EXPORT MVector | operator* (int, const MVector &)
| NO SCRIPT SUPPORT.
OPENMAYA_EXPORT MVector | operator* (short, const MVector &)
| NO SCRIPT SUPPORT.
OPENMAYA_EXPORT MVector | operator* (unsigned int, const MVector &)
| NO SCRIPT SUPPORT.
OPENMAYA_EXPORT MVector | operator* (unsigned short, const MVector &)
| NO SCRIPT SUPPORT.
OPENMAYA_EXPORT MVector | operator* (float, const MVector &)
| NO SCRIPT SUPPORT.
OPENMAYA_EXPORT MVector | operator* (double, const MVector &)
| NO SCRIPT SUPPORT.
OPENMAYA_EXPORT std::ostream & | operator<< (std::ostream &os, const MVector &v)
| NO SCRIPT SUPPORT. Search for all occurrences

## Member Enumeration Documentation

enum Axis

Search for all occurrences

Axes.

Enumerator:

  kXaxis | Search for all occurrences
  kYaxis | Search for all occurrences
  kZaxis | Search for all occurrences
  kWaxis | Search for all occurrences

## Constructor & Destructor Documentation

MVector | ( |  | ) | `[inline]`

The default class constructor.

Creates a null vector.

MVector | ( | const MVector & | src | ) | `[inline]`

The copy constructor.

Create a new vector and initialize it to the same values as the given vector.

Parameters:

  [in] | src | the vector object to copy

MVector | ( | const MFloatPoint & | src | ) |

Class constructor.

Create a new vector and initialize it to the same x, y, z values as the given point.

Parameters:

  [in] | src | the point object to copy

MVector | ( | const MFloatVector & | src | ) |

Class constructor.

Create a new vector and initialize it to the same values as the given vector.

Parameters:

  [in] | src | the vector object to copy

MVector | ( | const MPoint & | src | ) |

Class constructor.

Create a new vector and initialize it to the same x, y, z values as the given point.

Parameters:

  [in] | src | the point object to copy

MVector | ( | double | xx,
|  | double | yy,
|  | double | zz = `0.0`
| ) |  | `[inline]`

Class constructor.

Initializes the vector with the explicit x, y and z values provided as arguments.

Parameters:

  [in] | xx | the x component of the vector
  [in] | yy | the y component of the vector
  [in] | zz | the z component of the vector. Defaults to 0.0.

MVector | ( | const double | d[3] | ) | `[inline]`

Class constructor.

Initializes the vector with the explicit x, y and z values provided in the given double array.

Parameters:

  [in] | d | the 3 element array containing the initial x, y, and z values

## Member Function Documentation

MVector & operator= | ( | const MVector & | src | ) | `[inline]`

The assignment operator.

Allows assignment between MVectors.

Parameters:

  [in] | src | Vector to copy from.

double operator() | ( | unsigned int | i | ) | const`[inline]`

The index operator.

If its argument is 0 it will return the x component of the vector. If its argument is 1 it will return the y component of the vector. Otherwise it will return the z component of the vector.

Parameters:

  [in] | i | value indicating which component to return

double operator[] | ( | unsigned int | i | ) | const`[inline]`

The index operator.

If its argument is 0 it will return the x component of the vector. If its argument is 1 it will return the y component of the vector. Otherwise it will return the z component of the vector.

Parameters:

  [in] | i | value indicating which component to return

MVector operator^ | ( | const MVector & | right | ) | const`[inline]`

The cross product operator.

Parameters:

  [in] | right | Vector to take the cross product with.

double operator* | ( | const MVector & | right | ) | const`[inline]`

The dot product operator.

Parameters:

  [in] | right | Vector to take the dot product with.

MVector & operator/= | ( | double | scalar | ) | `[inline]`

The in place division operator.

Parameters:

  [in] | scalar | Division factor.

MVector operator/ | ( | double | scalar | ) | const`[inline]`

The division operator.

Parameters:

  [in] | scalar | Division factor.

MVector & operator*= | ( | double | scalar | ) | `[inline]`

The in place multiplication operator.

Parameters:

  [in] | scalar | Scale factor.

MVector operator* | ( | double | scalar | ) | const`[inline]`

The multiplication operator.

Parameters:

  [in] | scalar | Scale factor.

MVector operator+ | ( | const MVector & | other | ) | const`[inline]`

The vector addition operator.

Parameters:

  [in] | other | Vector to add.

MVector & operator+= | ( | const MVector & | other | ) | `[inline]`

The in place vector addition operator.

Parameters:

  [in] | other | Vector to add.

MVector operator- | ( |  | ) | const`[inline]`

The unary minus operator.

Negates the value of each of the x, y, and z components of the vector.

MVector & operator-= | ( | const MVector & | other | ) | `[inline]`

The in place vector subtraction operator.

Parameters:

  [in] | other | Vector to subtract.

MVector operator- | ( | const MVector & | other | ) | const`[inline]`

The vector subtraction operator.

Parameters:

  [in] | other | Vector to substract.

bool operator!= | ( | const MVector & | other | ) | const`[inline]`

The vector inequality operator.

This returns false if all three of the x, y, and z components are identical.

Parameters:

  [in] | other | The vector to compare to.

Returns:
  Bool false if the vectors are identical and true otherwise.

bool operator== | ( | const MVector & | other | ) | const`[inline]`

The vector equality operator.

This returns true if all three of the x, y, and z components are identical.

Parameters:

  [in] | other | The vector to compare to.

Returns:
  Bool true if the vectors are identical and false otherwise.

MVector rotateBy | ( | double | x,
|  | double | y,
|  | double | z,
|  | double | w
| ) |  | const

Search for all occurrences

Returns the vector that represents the rotation of this vector by the given quaternion.

Parameters:

  [in] | x | The x component of the quaternion.
  [in] | y | The y component of the quaternion.
  [in] | z | The z component of the quaternion.
  [in] | w | The w component of the quaternion.

Returns:
  The resulting vector.

Examples:
  hwDecalBumpShader_NV20.cpp.

MVector rotateBy | ( | const double | rotXYZ[3],
|  | MTransformationMatrix::RotationOrder | order
| ) |  | const

Search for all occurrences

Returns the vector that represents the rotation of this vector by the given XYZ rotational values, applied according to the given rotation order.

Parameters:

  [in] | rotXYZ | Array containing the X, Y, and Z axis rotations, respectively.
  [in] | order | Order in which to apply the XYZ components of the rotation.

Returns:
  The resulting vector.

MVector rotateBy | ( | MVector::Axis | axis,
|  | const double | angle
| ) |  | const

Search for all occurrences

Returns the vector that represents the rotation of this vector by the given angle about the given axis.

Parameters:

  [in] | axis | The axis to rotate about.
  [in] | angle | The rotation angle about the axis.

Returns:
  The resulting vector.

MVector rotateBy | ( | const MQuaternion & | q | ) | const

Search for all occurrences

Returns the vector that represents the rotation of this vector by the given quaternion.

Parameters:

  [in] | q | The quaternion rotation by which the vector will be rotated to produce the resulting vector.

Returns:
  The resulting vector.

MVector rotateBy | ( | const MEulerRotation & | e | ) | const

Search for all occurrences

Returns the vector that represents the rotation of this vector by the given euler rotation.

Parameters:

  [in] | e | The euler rotation by which the vector will be rotated to produce the resulting vector.

Returns:
  The resulting vector.

MQuaternion rotateTo | ( | const MVector & | other | ) | const

Search for all occurrences

Returns the quaternion that represents the rotation of this vector into the other vector about their mutually perpendicular axis.

Parameters:

  [in] | other | The other vector into which this vector will be rotated to produce the resulting quaternion rotation.

Returns:
  The resulting quaternion.

MStatus get | ( | double | dest[3] | ) | const`[inline]`

Search for all occurrences

Extracts the x, y, and z components of the vector and places them in elements 0, 1, and 2 of the double array passed.

Parameters:

  [out] | dest | the array of 3 doubles into which the results are placed.

Returns:
  MS::kSuccess if dest is a non-zero pointer and MS::kFailure otherwise.

MStatus normalize | ( |  | ) | `[inline]`

Search for all occurrences

Performs an in place normalization of the vector.

Returns:
  Always returns MS::kSuccess.

Examples:
  apiMeshShape.cpp, buildRotationNode.cpp, closestPointCmd.cpp, lineManip.cpp, lineManipContainer.cpp, manipulatorMath.cpp, meshOpFtyAction.cpp, ownerEmitter.cpp, pointOnSubdNode.cpp, simpleEmitter.cpp, simpleSolverNode.cpp, simpleSpring.cpp, squareScaleManip.cpp, squareScaleManipContext.cpp, and sweptEmitter.cpp.

double angle | ( | const MVector & | other | ) | const

Search for all occurrences

Returns the angle in radians between the vector and the one passed as an argument.

Parameters:

  [in] | other | the vector from which to compute the angle.

Returns:
  The angle in radians

Examples:
  buildRotationNode.cpp, and simpleSolverNode.cpp.

bool isEquivalent | ( | const MVector & | other,
|  | double | tol = `MVector_kTol`
| ) |  | const`[inline]`

Search for all occurrences

Returns true if the vector and the one passed as an argument are equal to each other within the specified tolerance.

Parameters:

  [in] | other | The vector to compare to.
  [in] | tol | The tolerance to use during the comparison.

Returns:
  Bool true if the vectors are equivalent and false otherwise.

Examples:
  moveNumericTool.cpp, and moveTool.cpp.

bool isParallel | ( | const MVector & | other,
|  | double | tol = `MVector_kTol`
| ) |  | const

Search for all occurrences

Returns true if the current vector and the one passed as an argument are parallel to each other within the specified tolerance.

Parameters:

  [in] | other | the vector to compare to
  [in] | tol | the tolerance to use during the comparison

Returns:
  true if the vectors are parallel and false otherwise

MVector transformAsNormal | ( | const MMatrix & | matrix | ) | const

Search for all occurrences

This method treats the vector as a normal vector and returns a transformed copy of the vector.

Normal vectors are not transformed in the same way as position vectors or points. If this vector is treated as a normal vector then it needs to be transformed by post multiplying it by the inverse tanspose of the transformation matrix. This method will apply the proper transformation to the vector as if it were a normal.

Parameters:

  [in] | matrix | the transformation matrix

Returns:
  The resulting transformed vector

double & operator() | ( | unsigned int | i | ) | `[inline]`

NO SCRIPT SUPPORT.

The index operator.

If its argument is 0 it will return the x component of the vector. If its argument is 1 it will return the y component of the vector. Otherwise it will return the z component of the vector.

Parameters:

  [in] | i | value indicating which component to return

double & operator[] | ( | unsigned int | i | ) | `[inline]`

NO SCRIPT SUPPORT.

The index operator.

If its argument is 0 it will return the x component of the vector. If its argument is 1 it will return the y component of the vector. Otherwise it will return the z component of the vector.

Parameters:

  [in] | i | value indicating which component to return

## Friends And Related Function Documentation

OPENMAYA_EXPORT MVector operator* | ( | const MMatrix & | left,
|  | const MVector & | right
| ) |  | `[friend]`

NO SCRIPT SUPPORT.

An MVector is the result.

Parameters:

  [in] | left | the matrix on the left
  [in] | right | the vector on the right

Returns:
  The MVector resulting from the multiplication

OPENMAYA_EXPORT MVector operator* | ( | int | scalar,
|  | const MVector & | other
| ) |  | `[friend]`

NO SCRIPT SUPPORT.

Parameters:

  [in] | scalar | Scale factor.
  [in] | other | Vector to scale.

Returns:
  The scales vector.

OPENMAYA_EXPORT MVector operator* | ( | short | scalar,
|  | const MVector & | other
| ) |  | `[friend]`

NO SCRIPT SUPPORT.

Parameters:

  [in] | scalar | Scale factor.
  [in] | other | Vector to scale.

Returns:
  The scales vector.

OPENMAYA_EXPORT MVector operator* | ( | unsigned int | scalar,
|  | const MVector & | other
| ) |  | `[friend]`

NO SCRIPT SUPPORT.

Parameters:

  [in] | scalar | Scale factor.
  [in] | other | Vector to scale.

Returns:
  The scales vector.

OPENMAYA_EXPORT MVector operator* | ( | unsigned short | scalar,
|  | const MVector & | other
| ) |  | `[friend]`

NO SCRIPT SUPPORT.

Parameters:

  [in] | scalar | Scale factor.
  [in] | other | Vector to scale.

Returns:
  The scales vector.

OPENMAYA_EXPORT MVector operator* | ( | float | scalar,
|  | const MVector & | other
| ) |  | `[friend]`

NO SCRIPT SUPPORT.

Parameters:

  [in] | scalar | Scale factor.
  [in] | other | Vector to scale.

Returns:
  The scales vector.

OPENMAYA_EXPORT MVector operator* | ( | double | scalar,
|  | const MVector & | other
| ) |  | `[friend]`

NO SCRIPT SUPPORT.

Parameters:

  [in] | scalar | Scale factor.
  [in] | other | Vector to scale.

Returns:
  The scales vector.

OPENMAYA_EXPORT std::ostream& operator<< | ( | std::ostream & | os,
|  | const MVector & | v
| ) |  | `[friend]`

NO SCRIPT SUPPORT.

The format used is [x, y, z].

Parameters:

  [in] | os | the ostream to print to
  [in] | v | the MVector whose value is to be printed

Returns:
  The ostream reference, os, provided as the first parameter.

MVector MVector MVector MVector MVector MVector MVector MVector MVector MVector
MVector MVector MVector MVector MVector MVector MVector MVector MVector MVector