- Main Page
- Classes
- Files
- Directories
- Examples

- File List
- File Members

# fbxaffinematrix.h

Go to the documentation of this file.

    00001 /****************************************************************************************
    00002
    00003    Copyright (C) 2012 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
    00303 //
    00304 //  WARNING!
    00305 //
    00306 //  Anything beyond these lines may not be documented accurately and is
    00307 //  subject to change without notice.
    00308 //
    00310 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00311     FbxAMatrix(const FbxVector4& pT, const FbxQuaternion& pQ, const FbxVector4& pS);
    00312
    00313     void SetTRS(const FbxVector4& pT, const FbxAMatrix& pRM, const FbxVector4& pS);
    00314     void SetRow(int pY, const FbxVector4& pRow);
    00315     void SetR(const FbxVector4& pV, const int pOrd);
    00316     void SetTOnly(const FbxVector4& pT);
    00317     void SetROnly(const FbxVector4& pR);
    00318     void SetQOnly(const FbxQuaternion& pQ);
    00319     FbxVector4 GetROnly() const;
    00320     FbxVector4 GetR(const int pOrd) const;
    00321     FbxQuaternion GetUnnormalizedQ() const;
    00322
    00323     void MultRM(const FbxVector4& pR);
    00324     void MultSM(const FbxVector4& pS);
    00325     bool IsRightHand() const;
    00326     bool IsIdentity(const double pThreshold = FBXSDK_TOLERANCE);
    00327     double Determinant() const;
    00328     int Compare(const FbxAMatrix pM, const double pThreshold = FBXSDK_TOLERANCE) const;
    00329 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00330 };
    00331
    00332 #include <fbxsdk/fbxsdk_nsend.h>
    00333
    00334 #endif /* _FBXSDK_CORE_MATH_AFFINE_MATRIX_H_ */