Initial commit
This commit is contained in:
228
Torque/SDK/lib/mayasdk6/include/maya/MTransformationMatrix.h
Normal file
228
Torque/SDK/lib/mayasdk6/include/maya/MTransformationMatrix.h
Normal file
@@ -0,0 +1,228 @@
|
||||
#ifndef _MTransformationMatrix
|
||||
#define _MTransformationMatrix
|
||||
//
|
||||
//-
|
||||
// ==========================================================================
|
||||
// Copyright (C) Alias Systems, a division of Silicon Graphics Limited.
|
||||
// All rights reserved. These coded instructions, statements and computer
|
||||
// programs contain unpublished information proprietary to Alias Systems,
|
||||
// a division of Silicon Graphics Limited, which is protected by the
|
||||
// Canadian and US federal copyright law and may not be disclosed to third
|
||||
// parties or copied or duplicated, in whole or in part, without prior
|
||||
// written consent of Alias Systems, a division of Silicon Graphics Limited
|
||||
// ==========================================================================
|
||||
//+
|
||||
//
|
||||
// CLASS: MTransformationMatrix
|
||||
//
|
||||
// *****************************************************************************
|
||||
//
|
||||
// CLASS DESCRIPTION (MTransformationMatrix)
|
||||
//
|
||||
// An MTransformationMatrix allows the manipulation of the individual
|
||||
// transformation components (eg scale, rotation, shear, etc) of a four by
|
||||
// four transformation matrix.
|
||||
//
|
||||
// *****************************************************************************
|
||||
|
||||
#if defined __cplusplus
|
||||
|
||||
// *****************************************************************************
|
||||
|
||||
// INCLUDED HEADER FILES
|
||||
|
||||
|
||||
#include <maya/MStatus.h>
|
||||
#include <maya/MTypes.h>
|
||||
|
||||
// *****************************************************************************
|
||||
|
||||
// DECLARATIONS
|
||||
|
||||
class MMatrix;
|
||||
class MVector;
|
||||
class MPoint;
|
||||
class MQuaternion;
|
||||
class MEulerRotation;
|
||||
|
||||
#define MTransformationMatrix_kTol 1.0e-10
|
||||
|
||||
// *****************************************************************************
|
||||
|
||||
// CLASS DECLARATION (MTransformationMatrix)
|
||||
|
||||
/// Transformation matrix
|
||||
/**
|
||||
Class for constructing transformation matrices
|
||||
*/
|
||||
#ifdef _WIN32
|
||||
#pragma warning(disable: 4522)
|
||||
#endif // _WIN32
|
||||
|
||||
class OPENMAYA_EXPORT MTransformationMatrix
|
||||
{
|
||||
public:
|
||||
///
|
||||
enum RotationOrder {
|
||||
///
|
||||
kInvalid,
|
||||
///
|
||||
kXYZ,
|
||||
///
|
||||
kYZX,
|
||||
///
|
||||
kZXY,
|
||||
///
|
||||
kXZY,
|
||||
///
|
||||
kYXZ,
|
||||
///
|
||||
kZYX,
|
||||
///
|
||||
kLast
|
||||
};
|
||||
///
|
||||
~MTransformationMatrix();
|
||||
///
|
||||
MTransformationMatrix();
|
||||
///
|
||||
MTransformationMatrix( const MTransformationMatrix& src );
|
||||
///
|
||||
MTransformationMatrix( const MMatrix& src );
|
||||
///
|
||||
MTransformationMatrix& operator= ( const MTransformationMatrix &src );
|
||||
///
|
||||
MTransformationMatrix& operator= ( const MMatrix &src );
|
||||
///
|
||||
MMatrix asMatrix() const;
|
||||
///
|
||||
MMatrix asMatrix(double percent) const;
|
||||
///
|
||||
MMatrix asMatrixInverse() const;
|
||||
///
|
||||
MMatrix asScaleMatrix() const;
|
||||
///
|
||||
MMatrix asRotateMatrix() const;
|
||||
///
|
||||
MStatus getScale( double[3], MSpace::Space ) const;
|
||||
///
|
||||
MStatus setScale( const double[3], MSpace::Space );
|
||||
///
|
||||
MStatus addScale( const double[3], MSpace::Space );
|
||||
///
|
||||
MQuaternion rotation() const;
|
||||
///
|
||||
MTransformationMatrix &rotateTo( const MQuaternion &q );
|
||||
///
|
||||
MTransformationMatrix &rotateBy( const MQuaternion &q,
|
||||
MSpace::Space space,
|
||||
MStatus *ReturnStatus = NULL);
|
||||
///
|
||||
MEulerRotation eulerRotation() const;
|
||||
///
|
||||
MTransformationMatrix &rotateTo( const MEulerRotation &e );
|
||||
///
|
||||
MTransformationMatrix &rotateBy( const MEulerRotation &e,
|
||||
MSpace::Space space,
|
||||
MStatus *ReturnStatus = NULL);
|
||||
///
|
||||
MStatus getRotationQuaternion( double &x, double &y, double &z,
|
||||
double &w ) const;
|
||||
///
|
||||
MStatus setRotationQuaternion( double x, double y, double z,
|
||||
double w );
|
||||
///
|
||||
MStatus addRotationQuaternion( double x, double y, double z,
|
||||
double w, MSpace::Space );
|
||||
///
|
||||
MStatus getRotation( double[3],
|
||||
RotationOrder& order ) const;
|
||||
///
|
||||
MStatus setRotation( const double rotation[3],
|
||||
RotationOrder order );
|
||||
///
|
||||
MStatus addRotation( const double rotation[3],
|
||||
RotationOrder order, MSpace::Space );
|
||||
///
|
||||
RotationOrder rotationOrder( MStatus* ReturnStatus = NULL ) const;
|
||||
///
|
||||
MStatus reorderRotation( RotationOrder& order );
|
||||
///
|
||||
MStatus setToRotationAxis( const MVector &axis, double rotation );
|
||||
///
|
||||
MQuaternion rotationOrientation() const;
|
||||
///
|
||||
MTransformationMatrix &setRotationOrientation( const MQuaternion &q );
|
||||
///
|
||||
MVector translation( MSpace::Space, MStatus* ReturnStatus=NULL ) const;
|
||||
///
|
||||
MStatus setTranslation( const MVector& vector, MSpace::Space );
|
||||
///
|
||||
MStatus addTranslation( const MVector& vector, MSpace::Space );
|
||||
///
|
||||
MStatus setShear( const double[3], MSpace::Space );
|
||||
///
|
||||
MStatus getShear( double[3], MSpace::Space ) const;
|
||||
///
|
||||
MStatus addShear( const double[3], MSpace::Space );
|
||||
///
|
||||
MPoint scalePivot( MSpace::Space, MStatus* ReturnStatus = NULL ) const;
|
||||
///
|
||||
MStatus setScalePivot( const MPoint&, MSpace::Space, bool balance );
|
||||
///
|
||||
MVector scalePivotTranslation(MSpace::Space,
|
||||
MStatus* ReturnStatus=NULL )const;
|
||||
///
|
||||
MStatus setScalePivotTranslation( const MVector& vector,
|
||||
MSpace::Space );
|
||||
///
|
||||
MPoint rotatePivot( MSpace::Space, MStatus* ReturnStatus=NULL ) const;
|
||||
///
|
||||
MStatus setRotatePivot( const MPoint& point,
|
||||
MSpace::Space, bool balance );
|
||||
///
|
||||
MVector rotatePivotTranslation( MSpace::Space space,
|
||||
MStatus* ReturnStatus=NULL ) const;
|
||||
///
|
||||
MStatus setRotatePivotTranslation( const MVector& vector,
|
||||
MSpace::Space space );
|
||||
///
|
||||
bool isEquivalent ( const MTransformationMatrix &other,
|
||||
double tolerance = MTransformationMatrix_kTol ) const;
|
||||
///
|
||||
bool operator == (const MTransformationMatrix & other ) const;
|
||||
///
|
||||
bool operator != ( const MTransformationMatrix & other ) const;
|
||||
|
||||
/// OBSOLETE
|
||||
MStatus getRotation( double[3],
|
||||
RotationOrder& order, MSpace::Space ) const;
|
||||
/// OBSOLETE
|
||||
MStatus setRotation( const double rotation[3],
|
||||
RotationOrder order, MSpace::Space );
|
||||
/// OBSOLETE
|
||||
MStatus getRotationQuaternion( double &x, double &y, double &z,
|
||||
double &w, MSpace::Space ) const;
|
||||
/// OBSOLETE
|
||||
MStatus setRotationQuaternion( double x, double y, double z,
|
||||
double w, MSpace::Space );
|
||||
///
|
||||
static const MTransformationMatrix identity;
|
||||
|
||||
|
||||
protected:
|
||||
// No protected members
|
||||
|
||||
private:
|
||||
const void* data;
|
||||
const char* className() const;
|
||||
MTransformationMatrix( const void* );
|
||||
};
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma warning(default: 4522)
|
||||
#endif // _WIN32
|
||||
|
||||
// *****************************************************************************
|
||||
#endif /* __cplusplus */
|
||||
#endif /* _MTransformationMatrix */
|
||||
Reference in New Issue
Block a user