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_ */