- Main Page
- Classes
- Files
- Directories

- File List
- File Members

# fbxaffinematrix.h

Go to the documentation of this file.

    00001 /****************************************************************************************
    00002
    00003    Copyright (C) 2013 Autodesk, Inc.
    00004    All rights reserved.
    00005
    00006    Use of this software is subject to the terms of the Autodesk license agreement
    00007    provided at the time of installation or download, or which otherwise accompanies
    00008    this software in either electronic or hard copy form.
    00009
    00010 ****************************************************************************************/
    00011
    00013 #ifndef _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_
    00014 #define _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_
    00015
    00016 #include <fbxsdk/fbxsdk_def.h>
    00017
    00018 #include <fbxsdk/core/math/fbxvector4.h>
    00019
    00020 #include <fbxsdk/fbxsdk_nsbegin.h>
    00021
    00031 class FBXSDK_DLL FbxAMatrix : public FbxDouble4x4
    00032 {
    00033 public:
    00038
    00039         FbxAMatrix();
    00040
    00044         FbxAMatrix(const FbxAMatrix& pOther);
    00045
    00051         FbxAMatrix(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS);
    00052
    00054         ~FbxAMatrix();
    00056
    00066         double Get(int pY, int pX) const;
    00067
    00071         FbxVector4 GetT() const;
    00072
    00077         FbxVector4 GetR() const;
    00078
    00082         FbxQuaternion GetQ() const;
    00083
    00087         FbxVector4 GetS() const;
    00088
    00093         FbxVector4 GetRow(int pY) const;
    00094
    00099         FbxVector4 GetColumn(int pX) const;
    00100
    00102         void SetIdentity();
    00103
    00107         void SetT(const FbxVector4& pT);
    00108
    00113         void SetR(const FbxVector4& pR);
    00114
    00118         void SetQ(const FbxQuaternion& pQ);
    00119
    00123         void SetS(const FbxVector4& pS);
    00124
    00130         void SetTRS(const FbxVector4& pT, const FbxVector4& pR, const FbxVector4& pS);
    00131
    00137         void SetTQS(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS);
    00138
    00142         FbxAMatrix& operator=(const FbxAMatrix& pM);
    00144
    00157         FbxAMatrix operator*(double pValue) const;
    00158
    00167         FbxAMatrix operator/(double pValue) const;
    00168
    00177         FbxAMatrix& operator*=(double pValue);
    00178
    00187         FbxAMatrix& operator/=(double pValue);
    00189
    00198         FbxVector4 MultT(const FbxVector4& pVector4) const;
    00199
    00204         FbxVector4 MultR(const FbxVector4& pVector4) const;
    00205
    00210         FbxQuaternion MultQ(const FbxQuaternion& pQuaternion) const;
    00211
    00216         FbxVector4 MultS(const FbxVector4& pVector4) const;
    00218
    00226         FbxAMatrix operator-() const;
    00227
    00252         FbxAMatrix operator*(const FbxAMatrix& pOther) const;
    00253
    00258         FbxAMatrix& operator*=(const FbxAMatrix& pOther);
    00259
    00263         FbxAMatrix Inverse() const;
    00264
    00268         FbxAMatrix Transpose() const;
    00270
    00279         bool operator==(const FbxAMatrix& pOther) const;
    00280
    00285         bool operator!=(const FbxAMatrix& pOther) const;
    00287
    00292
    00293         operator double* ();
    00295         operator const double* () const;
    00297         typedef const double(kDouble44)[4][4] ;
    00299         inline kDouble44 & Double44() const { return *((kDouble44 *)&mData); }
    00301
    00304     bool IsIdentity(const double pThreshold=FBXSDK_TOLERANCE);
    00305
    00306 /*****************************************************************************************************************************
    00307 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
    00308 *****************************************************************************************************************************/
    00309 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00310     FbxAMatrix(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS);
    00311
    00312     void SetTRS(const FbxVector4& pT, const FbxAMatrix& pRM, const FbxVector4& pS);
    00313     void SetRow(int pY, const FbxVector4& pRow);
    00314     void SetR(const FbxVector4& pV, const int pOrd);
    00315     void SetTOnly(const FbxVector4& pT);
    00316     void SetROnly(const FbxVector4& pR);
    00317     void SetQOnly(const FbxQuaternion& pQ);
    00318     FbxVector4 GetROnly() const;
    00319     FbxVector4 GetR(const int pOrd) const;
    00320     FbxQuaternion GetUnnormalizedQ() const;
    00321
    00322     void MultRM(const FbxVector4& pR);
    00323     void MultSM(const FbxVector4& pS);
    00324     bool IsRightHand() const;
    00325     double Determinant() const;
    00326     int Compare(const FbxAMatrix pM, const double pThreshold=FBXSDK_TOLERANCE) const;
    00327 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
    00328 };
    00329
    00330 #include <fbxsdk/fbxsdk_nsend.h>
    00331
    00332 #endif /* _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ */