Go to the
documentation of this file.
00001
00004 #ifndef FBXFILESDK_KFBXMATH_KFBXXMATRIX_H
00005 #define FBXFILESDK_KFBXMATH_KFBXXMATRIX_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 #include <fbxfilesdk/fbxfilesdk_def.h>
00042
00043 #include <fbxfilesdk/kfbxplugins/kfbxtypes.h>
00044 #include <fbxfilesdk/kfbxmath/kfbxquaternion.h>
00045 #include <fbxfilesdk/kfbxmath/kfbxvector4.h>
00046 #include <fbxfilesdk/kfbxmath/kfbxtransformation.h>
00047
00048 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00049
00050 class KgeAMatrix;
00051
00061 class KFBX_DLL KFbxXMatrix : public fbxDouble44
00062 {
00063 public:
00064
00069
00071 KFbxXMatrix();
00072
00076 KFbxXMatrix(const KFbxXMatrix& pXMatrix);
00077
00083 KFbxXMatrix(const KFbxVector4& pT,
00084 const KFbxVector4& pR,
00085 const KFbxVector4& pS);
00086
00088 ~KFbxXMatrix();
00089
00091
00096
00102 double Get(int pY, int pX) const;
00103
00107 KFbxVector4 GetT() const;
00108
00113 KFbxVector4 GetR() const;
00114
00118 KFbxQuaternion GetQ() const;
00119
00123 KFbxVector4 GetS() const;
00124
00129 KFbxVector4 GetRow(int pY) const;
00130
00135 KFbxVector4 GetColumn(int pX) const;
00136
00138 void SetIdentity();
00139
00143 void SetT(const KFbxVector4& pT);
00144
00149 void SetR(const KFbxVector4& pR);
00150
00154 void SetQ(const KFbxQuaternion& pQ);
00155
00159 void SetS(const KFbxVector4& pS);
00160
00166 void SetTRS(const KFbxVector4& pT,
00167 const KFbxVector4& pR,
00168 const KFbxVector4& pS);
00169
00175 void SetTQS(const KFbxVector4& pT,
00176 const KFbxQuaternion& pQ,
00177 const KFbxVector4& pS);
00178
00182 KFbxXMatrix& operator=(const KFbxXMatrix& pM);
00183
00185
00190
00199 KFbxXMatrix operator*(double pValue) const;
00200
00209 KFbxXMatrix operator/(double pValue) const;
00210
00219 KFbxXMatrix& operator*=(double pValue);
00220
00229 KFbxXMatrix& operator/=(double pValue);
00230
00232
00237
00242 KFbxVector4 MultT(const KFbxVector4& pVector4) const;
00243
00248 KFbxVector4 MultR(const KFbxVector4& pVector4) const;
00249
00254 KFbxQuaternion MultQ(const KFbxQuaternion& pQuaternion) const;
00255
00260 KFbxVector4 MultS(const KFbxVector4& pVector4) const;
00261
00263
00268
00272 KFbxXMatrix operator-() const;
00273
00298 KFbxXMatrix operator*(const KFbxXMatrix& pXMatrix) const;
00299
00304 KFbxXMatrix& operator*=(const KFbxXMatrix& pXMatrix);
00305
00309 KFbxXMatrix Inverse() const;
00310
00314 KFbxXMatrix Transpose() const;
00315
00317
00322
00327 bool operator==(const KFbxXMatrix & pXMatrix) const;
00328
00333 bool operator!=(const KFbxXMatrix & pXMatrix) const;
00334
00336
00341
00343 operator double* ();
00345 operator const double* () const;
00347 typedef const double(kDouble44)[4][4] ;
00349 inline kDouble44 & Double44() const { return *((kDouble44 *)&mData); }
00351
00352
00353
00354
00356
00357
00358
00359
00360
00361
00363
00364 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00365 void CreateKFbxXMatrixRotation(double pX, double pY, double pZ);
00366 void V2M(KFbxXMatrix &pMatrix, const KFbxVector4 &pVector, ERotationOrder pRotationOrder);
00367 void M2V(KFbxVector4 &pVector, const KFbxXMatrix &pMatrix, ERotationOrder pRotationOrder);
00368
00373
00374 KFbxXMatrix& operator=(const KgeAMatrix& pAMatrix);
00375 operator KgeAMatrix& ();
00376
00378
00379 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00380
00381 };
00382
00383 inline EFbxType FbxTypeOf( KFbxXMatrix const &pItem ) { return eDOUBLE44; }
00384 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00385
00386 #endif // FBXFILESDK_KFBXMATH_KFBXXMATRIX_H
00387