Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_
00014 #define _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/core/math/fbxquaternion.h>
00019
00020 #include <fbxsdk/fbxsdk_nsbegin.h>
00021
00027 class FBXSDK_DLL FbxDualQuaternion
00028 {
00029 public:
00034
00035 FbxDualQuaternion();
00036
00041 FbxDualQuaternion(const FbxQuaternion& pV1, const FbxQuaternion& pV2);
00042
00046 FbxDualQuaternion(const FbxDualQuaternion& pV);
00047
00052 FbxDualQuaternion(const FbxQuaternion& pRotation, const FbxVector4& pTranslation);
00053
00064 FbxDualQuaternion(double pX1, double pY1, double pZ1, double pW1, double pX2, double pY2, double pZ2, double pW2);
00065
00067 ~FbxDualQuaternion();
00069
00077 FbxDualQuaternion& operator=(const FbxDualQuaternion& pDualQuaternion);
00078
00089 void Set(double pX1, double pY1, double pZ1, double pW1, double pX2, double pY2, double pZ2, double pW2);
00090
00094 FbxQuaternion& GetFirstQuaternion();
00095
00099 FbxQuaternion& GetSecondQuaternion();
00100
00104 const FbxQuaternion& GetFirstQuaternion() const;
00105
00109 const FbxQuaternion& GetSecondQuaternion() const;
00110
00114 FbxQuaternion GetRotation() const;
00115
00121 FbxVector4 GetTranslation() const;
00123
00133 FbxDualQuaternion operator+(double pValue) const;
00134
00140 FbxDualQuaternion operator-(double pValue) const;
00141
00147 FbxDualQuaternion operator*(double pValue) const;
00148
00154 FbxDualQuaternion operator/(double pValue) const;
00155
00161 FbxDualQuaternion& operator+=(double pValue);
00162
00168 FbxDualQuaternion& operator-=(double pValue);
00169
00175 FbxDualQuaternion& operator*=(double pValue);
00176
00182 FbxDualQuaternion& operator/=(double pValue);
00184
00192 FbxDualQuaternion operator-() const;
00193
00199 FbxDualQuaternion operator+(const FbxDualQuaternion& pDualQuaternion) const;
00200
00206 FbxDualQuaternion operator-(const FbxDualQuaternion& pDualQuaternion) const;
00207
00213 FbxDualQuaternion operator*(const FbxDualQuaternion& pDualQuaternion) const;
00214
00220 FbxDualQuaternion operator/(const FbxDualQuaternion& pDualQuaternion) const;
00221
00227 FbxDualQuaternion& operator+=(const FbxDualQuaternion& pDualQuaternion);
00228
00234 FbxDualQuaternion& operator-=(const FbxDualQuaternion& pDualQuaternion);
00235
00241 FbxDualQuaternion& operator*=(const FbxDualQuaternion& pDualQuaternion);
00242
00248 FbxDualQuaternion& operator/=(const FbxDualQuaternion& pDualQuaternion);
00249
00255 FbxDualQuaternion operator*(const FbxVector4 pVector) const;
00256
00261 FbxDualQuaternion Product(const FbxDualQuaternion& pDualQuaternion) const;
00262
00265 void Normalize();
00266
00270 void Inverse();
00271
00275 FbxVector4 Deform(FbxVector4& pPoint);
00277
00285 void Conjugate();
00286
00289 void Dual();
00290
00293 void DualConjugate();
00295
00304 bool operator==(const FbxDualQuaternion & pV) const;
00305
00310 bool operator!=(const FbxDualQuaternion & pV) const;
00312
00313
00314
00315
00316 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00317 private:
00318 FbxQuaternion mQ1;
00319 FbxQuaternion mQ2;
00320 #endif
00321 };
00322
00323 #include <fbxsdk/fbxsdk_nsend.h>
00324
00325 #endif