MVector Class Reference
[OpenMaya - API module for common classes]

#include <MVector.h>
Collaboration diagram for MVector:
Collaboration graph
[legend]

List of all members.


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, 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, surfaceTwist.cpp, surfaceTwistCmd.cpp, sweptEmitter.cpp, sweptEmitter.h, swissArmyManip.cpp, torusField.cpp, torusField.h, and translateCmd.cpp.


Public Types

enum   Axis { kXaxis, kYaxis, kZaxis, kWaxis }
  Axes. More...

Public Member Functions

  MVector ()
  MVector (const MVector &)
  MVector (const MFloatPoint &)
  MVector (const MFloatVector &)
  MVector (const MPoint &)
  MVector (double xx, double yy, double zz=0.0)
  MVector (const double d[3])
  ~MVector ()
MVector operator= (const MVector &src)
double  operator() (unsigned int i) const
double  operator[] (unsigned int i) const
MVector  operator^ (const MVector &right) const
double  operator* (const MVector &right) const
MVector operator/= (double scalar)
MVector  operator/ (double scalar) const
MVector operator*= (double scalar)
MVector  operator* (double scalar) const
MVector  operator+ (const MVector &other) const
MVector operator+= (const MVector &other)
MVector  operator- () const
MVector operator-= (const MVector &other)
MVector  operator- (const MVector &other) const
MVector  operator* (const MMatrix &) const
MVector operator*= (const MMatrix &)
bool  operator!= (const MVector &other) const
bool  operator== (const MVector &other) const
MVector  rotateBy (double x, double y, double z, double w) const
MVector  rotateBy (const double rotXYZ[3], MTransformationMatrix::RotationOrder order) const
MVector  rotateBy (MVector::Axis axis, const double angle) const
MVector  rotateBy (const MQuaternion &) const
MVector  rotateBy (const MEulerRotation &) const
MQuaternion  rotateTo (const MVector &) const
MStatus  get (double[3]) const
double  length () const
MVector  normal () const
MStatus  normalize ()
double  angle (const MVector &other) const
bool  isEquivalent (const MVector &other, double tolerance=1.0e-10) const
bool  isParallel (const MVector &other, double tolerance=1.0e-10) const
MVector  transformAsNormal (const MMatrix &matrix) const
double &  operator() (unsigned int i)
  NO SCRIPT SUPPORT.
double &  operator[] (unsigned int i)
  NO SCRIPT SUPPORT.

Public Attributes

double  x
  The x component of the vector.
double  y
  The y component of the vector.
double  z
  The z component of the vector.

Static Public Attributes

static const MVector  zero
  The null vector.
static const MVector  one
  The vector <1,1,1>.
static const MVector  xAxis
  Unit vector in the positive x direction.
static const MVector  yAxis
  Unit vector in the positive y direction.
static const MVector  zAxis
  Unit vector in the positive z direction.
static const MVector  xNegAxis
  Unit vector in the negative z direction.
static const MVector  yNegAxis
  Unit vector in the negative z direction.
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.

Member Enumeration Documentation

Axes.

Enumerator:
kXaxis   
kYaxis   
kZaxis   
kWaxis   

Constructor & Destructor Documentation

MVector::MVector (  )  [inline]

The default class constructor. Creates a null vector.

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

MVector::~MVector (  )  [inline]

Class destructor.


Member Function Documentation

MVector & MVector::operator= ( const MVector src  )  [inline]

The assignment operator. Allows assignment between MVectors.

Parameters:
[in]  src  Vector to copy from.

double MVector::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 MVector::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 MVector::operator^ ( const MVector right  )  const [inline]

The cross product operator.

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

double MVector::operator* ( const MVector right  )  const [inline]

The dot product operator.

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

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

The in place division operator.

Parameters:
[in]  scalar  Division factor.

MVector MVector::operator/ ( double  scalar  )  const [inline]

The division operator.

Parameters:
[in]  scalar  Division factor.

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

The in place multiplication operator.

Parameters:
[in]  scalar  Scale factor.

MVector MVector::operator* ( double  scalar  )  const [inline]

The multiplication operator.

Parameters:
[in]  scalar  Scale factor.

MVector MVector::operator+ ( const MVector other  )  const [inline]

The vector addition operator.

Parameters:
[in]  other  Vector to add.

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

The in place vector addition operator.

Parameters:
[in]  other  Vector to add.

MVector MVector::operator- (  )  const [inline]

The unary minus operator. Negates the value of each of the x, y, and z components of the vector.

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

The in place vector subtraction operator.

Parameters:
[in]  other  Vector to subtract.

MVector MVector::operator- ( const MVector other  )  const [inline]

The vector subtraction operator.

Parameters:
[in]  other  Vector to substract.

MVector MVector::operator* ( const MMatrix right  )  const

The matrix multiplication operator.

MVector & MVector::operator*= ( const MMatrix right  ) 

The in place matrix multiplication operator.

bool MVector::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 MVector::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 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.

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.

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

Returns the vector that represents the rotation of this vector by the given rotateXYZ according to the rotation order.

Parameters:
[in]  rotXYZ  The array that represent the rotation about the X, Y, and Z axis respectively.
Returns:
The resulting vector.

MVector 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.

Parameters:
[in]  axis  The axis to rotate about.
[in]  angle  The rotation angle about the axis.
Returns:
The resulting vector.

MVector MVector::rotateBy ( const MQuaternion q  )  const

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 MVector::rotateBy ( const MEulerRotation e  )  const

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 MVector::rotateTo ( const MVector other  )  const

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 MVector::get ( double  dest[3]  )  const [inline]

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.

double MVector::length (  )  const [inline]

Return the length of the vector.

Examples:

MVector MVector::normal (  )  const [inline]

Return a normalized copy of this vector.

MStatus MVector::normalize (  )  [inline]

double MVector::angle ( const MVector other  )  const

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:

bool MVector::isEquivalent ( const MVector other,
double  tol = 1.0e-10  
) const [inline]

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:

bool MVector::isParallel ( const MVector other,
double  tol = 1.0e-10  
) const

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 MVector::transformAsNormal ( const MMatrix matrix  )  const

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 & MVector::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 & MVector::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.

The multiplication operator that allows the MMatrix on the left to be multiplied by an MVector on the right. 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.

The multiplication operator that allows the scalar value to preceed the vector.

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.

The multiplication operator that allows the scalar value to preceed the vector.

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.

The multiplication operator that allows the scalar value to preceed the vector.

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.

The multiplication operator that allows the scalar value to preceed the vector.

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.

The multiplication operator that allows the scalar value to preceed the vector.

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.

The multiplication operator that allows the scalar value to preceed the vector.

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.

Print the contents of the given MVector on the given ostream. 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.

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