fbxsdk/core/math/fbxdualquaternion.h Source File
 
 
 
fbxsdk/core/math/fbxdualquaternion.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_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 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
00315 *****************************************************************************************************************************/
00316 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00317 private:
00318         FbxQuaternion mQ1;
00319         FbxQuaternion mQ2;
00320 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00321 };
00322 
00323 #include <fbxsdk/fbxsdk_nsend.h>
00324 
00325 #endif /* _FBXSDK_CORE_MATH_DUAL_QUATERNION_H_ */