00001
00004 #ifndef _FBXSDK_X_MATRIX_H_
00005 #define _FBXSDK_X_MATRIX_H_
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #include <kaydaradef.h>
00043 #ifndef KFBX_DLL
00044 #define KFBX_DLL K_DLLIMPORT
00045 #endif
00046
00047 #include <kaydara.h>
00048
00049 #include <kfbxplugins/kfbxtypes.h>
00050 #include <kfbxmath/kfbxquaternion.h>
00051 #include <kfbxmath/kfbxvector4.h>
00052 #include <kfbxmath/kfbxtransformation.h>
00053
00054 #include <kbaselib_forward.h>
00055
00056 #include <fbxfilesdk_nsbegin.h>
00057
00067 class KFBX_DLL KFbxXMatrix : public fbxDouble44
00068 {
00069 public:
00070
00075
00077 KFbxXMatrix();
00078
00080 KFbxXMatrix(const KFbxXMatrix& pXMatrix);
00081
00087 KFbxXMatrix(KFbxVector4& pT,
00088 KFbxVector4& pR,
00089 KFbxVector4& pS);
00090
00092 ~KFbxXMatrix();
00093
00095
00100
00106 double Get(int pY, int pX) const;
00107
00111 KFbxVector4 GetT();
00112
00116 KFbxVector4 GetR();
00117
00121 KFbxQuaternion GetQ();
00122
00126 KFbxVector4 GetS();
00127
00132 KFbxVector4 GetRow(int pY);
00133
00138 KFbxVector4 GetColumn(int pX);
00139
00141 void SetIdentity();
00142
00146 void SetT(KFbxVector4& pT);
00147
00151 void SetR(KFbxVector4& pR);
00152
00156 void SetQ(KFbxQuaternion& pQ);
00157
00161 void SetS(KFbxVector4& pS);
00162
00168 void SetTRS(KFbxVector4& pT,
00169 KFbxVector4& pR,
00170 KFbxVector4& pS);
00171
00177 void SetTQS(KFbxVector4& pT,
00178 KFbxQuaternion& pQ,
00179 KFbxVector4& pS);
00180
00182 KFbxXMatrix& operator=(const KFbxXMatrix& pM);
00183
00185
00190
00196 KFbxXMatrix operator*(double pValue);
00197
00203 KFbxXMatrix operator/(double pValue);
00204
00210 KFbxXMatrix& operator*=(double pValue);
00211
00217 KFbxXMatrix& operator/=(double pValue);
00218
00220
00225
00230 KFbxVector4 MultT(KFbxVector4& pVector4);
00231
00236 KFbxVector4 MultR(KFbxVector4& pVector4);
00237
00242 KFbxQuaternion MultQ(KFbxQuaternion& pQuaternion);
00243
00248 KFbxVector4 MultS(KFbxVector4& pVector4);
00249
00251
00256
00260 KFbxXMatrix operator-();
00261
00266 KFbxXMatrix operator*(KFbxXMatrix& pXMatrix);
00267
00272 KFbxXMatrix& operator*=(KFbxXMatrix& pXMatrix);
00273
00277 KFbxXMatrix Inverse();
00278
00282 KFbxXMatrix Transpose();
00283
00285
00290
00295 bool operator==(KFbxXMatrix& pXMatrix);
00296
00301 bool operator==(KFbxXMatrix const& pXMatrix) const;
00302
00307 bool operator!=(KFbxXMatrix& pXMatrix);
00308
00313 bool operator!=(KFbxXMatrix const& pXMatrix) const;
00314
00316
00321
00323 operator double* ();
00324
00325 typedef const double(kDouble44)[4][4] ;
00326
00327 inline kDouble44 & Double44() const { return *((kDouble44 *)&mData); }
00329
00330
00331
00332
00334
00335
00336
00337
00338
00339
00341
00342 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00343 void CreateKFbxXMatrixRotation(double pX, double pY, double pZ);
00344 void V2M(KFbxXMatrix &pMatrix, KFbxVector4 &pVector, ERotationOrder pRotationOrder);
00345 void M2V(KFbxVector4 &pVector, KFbxXMatrix &pMatrix, ERotationOrder pRotationOrder);
00346
00351
00352 KFbxXMatrix& operator=(const KgeAMatrix& pAMatrix);
00353 operator KgeAMatrix& ();
00354
00356
00357 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00358
00359 };
00360
00361 inline EFbxType FbxTypeOf( KFbxXMatrix const &pItem ) { return eDOUBLE44; }
00362 #include <fbxfilesdk_nsend.h>
00363
00364 #endif // #ifndef _FBXSDK_X_MATRIX_H_
00365
00366