00001
00004 #ifndef _FBXSDK_VECTOR4_H_
00005 #define _FBXSDK_VECTOR4_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 #include <klib/karrayul.h>
00049
00050 #ifndef MB_FBXSDK
00051 #include <kbaselib_nsuse.h>
00052 #endif
00053
00054 #include <kfbxplugins/kfbxtypes.h>
00055
00056 #include <fbxfilesdk_nsbegin.h>
00057
00061 class KFBX_DLL KFbxVector4 : public fbxDouble4
00062 {
00063
00064 public:
00065
00070
00072 KFbxVector4();
00073
00075 KFbxVector4(const KFbxVector4& pVector4);
00076
00083 KFbxVector4(double pX, double pY, double pZ, double pW = 1.0);
00084
00088 KFbxVector4(const double pValue[4]);
00089
00094 KFbxVector4(const fbxDouble3& pValue);
00095
00097 ~KFbxVector4();
00098
00100
00105
00107 KFbxVector4& operator=(const KFbxVector4& pVector4);
00108
00110 KFbxVector4& operator=(const double* pValue);
00111
00113 KFbxVector4& operator=(const fbxDouble3& pValue);
00114
00120 double& operator[](int pIndex);
00121 double const& operator[](int pIndex) const;
00122
00128 double GetAt(int pIndex);
00129
00135 void SetAt(int pIndex, double pValue);
00136
00143 void Set(double pX, double pY, double pZ, double pW = 1.0);
00144
00146
00151
00157 KFbxVector4 operator+(double pValue);
00158
00164 KFbxVector4 operator-(double pValue);
00165
00171 KFbxVector4 operator*(double pValue);
00172
00178 KFbxVector4 operator/(double pValue);
00179
00185 KFbxVector4& operator+=(double pValue);
00186
00192 KFbxVector4& operator-=(double pValue);
00193
00199 KFbxVector4& operator*=(double pValue);
00200
00206 KFbxVector4& operator/=(double pValue);
00207
00209
00214
00218 KFbxVector4 operator-();
00219
00225 KFbxVector4 operator+(KFbxVector4& pVector);
00226
00232 KFbxVector4 operator-(KFbxVector4& pVector);
00233
00239 KFbxVector4 operator*(KFbxVector4& pVector);
00240
00246 KFbxVector4 operator/(KFbxVector4& pVector);
00247
00253 KFbxVector4& operator+=(KFbxVector4& pVector);
00254
00260 KFbxVector4& operator-=(KFbxVector4& pVector);
00261
00267 KFbxVector4& operator*=(KFbxVector4& pVector);
00268
00274 KFbxVector4& operator/=(KFbxVector4& pVector);
00275
00281 double DotProduct(KFbxVector4& pVector);
00282
00288 KFbxVector4 CrossProduct(KFbxVector4& pVector);
00289
00298 static bool AxisAlignmentInEulerAngle(KFbxVector4 const& pAB,
00299 KFbxVector4 const& pA,
00300 KFbxVector4 const& pB,
00301 KFbxVector4& pAngles);
00302
00304
00309
00314 bool operator==(KFbxVector4& pVector);
00315 bool operator==(KFbxVector4 const& pVector) const;
00316
00321 bool operator!=(KFbxVector4& pVector);
00322 bool operator!=(KFbxVector4 const& pVector) const;
00323
00325
00330
00335 double Length();
00336
00341 double SquareLength();
00342
00348 double Distance(KFbxVector4& pVector);
00349
00353 void Normalize();
00354
00356
00361
00363 operator double* ();
00364
00366 operator const double* ();
00367
00368 operator const double* () const;
00369
00370
00372
00374
00375
00376
00377
00378
00379
00381
00382 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00383
00384
00385
00386 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00387
00388 };
00389
00390 typedef class KFBX_DLL KArrayTemplate<KFbxVector4> KArrayKFbxVector4;
00391 typedef KFbxVector4* HKFbxVector4;
00392
00393 inline EFbxType FbxTypeOf( KFbxVector4 const &pItem ) { return eDOUBLE4; }
00394
00395
00396 #include <fbxfilesdk_nsend.h>
00397
00398 #endif // #ifndef _FBXSDK_VECTOR4_H_
00399
00400