00001
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXNURBSCURVE_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXNURBSCURVE_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/kfbxgeometry.h>
00044
00045 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00046
00084 class KFBX_DLL KFbxNurbsCurve : public KFbxGeometry
00085 {
00086 KFBXOBJECT_DECLARE(KFbxNurbsCurve,KFbxGeometry);
00087 public:
00089 virtual KFbxNodeAttribute::EAttributeType GetAttributeType() const;
00090
00095 enum EDimension
00096 {
00097 e2D = 2,
00098 e3D,
00099 eDIMENSIONS_COUNT = 2
00100 };
00101
00107 enum EType
00108 {
00109 eOPEN,
00110 eCLOSED,
00111 ePERIODIC,
00112 eTYPE_COUNT
00113 };
00114
00121 void InitControlPoints( int pCount, EType pVType );
00122
00126 inline double* GetKnotVector() const { return mKnotVector; }
00127
00131 int GetKnotCount() const;
00132
00137 inline void SetOrder( int pOrder ) { mOrder = pOrder; }
00138
00142 inline int GetOrder() const { return mOrder; }
00143
00149 inline void SetDimension( EDimension pDimension ) { mDimension = pDimension; }
00150
00154 inline EDimension GetDimension() const { return mDimension; }
00155
00159 bool IsRational();
00160
00173 int GetSpanCount() const;
00174
00178 inline EType GetType() const { return mNurbType; }
00179
00185 inline bool IsPolyline() const { return ( GetOrder() == 2 ); }
00186
00191 bool IsBezier() const;
00192
00193
00194
00195
00197
00198
00199
00200
00201
00202
00204 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00205
00206 virtual KFbxObject& Copy(const KFbxObject& pObject);
00207 virtual KFbxObject* Clone(KFbxObject* pContainer, KFbxObject::ECloneType pCloneType = eDEEP_CLONE) const;
00208
00209 bool FullMultiplicity() const;
00210
00211
00212 typedef enum
00213 {
00214 eNurbCurveTypeUnknown,
00215 eWeightTooSmall,
00216 eKnotVectorError,
00217 eWrongNumberOfControlPoint,
00218
00219
00220
00221
00222
00223
00224
00225 eErrorCount
00226 } EError;
00227
00228 protected:
00229 KFbxNurbsCurve(KFbxSdkManager& pManager, char const* pName);
00230
00231 void Reset();
00232
00233 virtual KString GetTypeName() const;
00234
00235 virtual void Destruct(bool pRecursive, bool pDependents);
00236
00237 public:
00238
00239 bool mIsRational;
00240
00241 private:
00242 double* mKnotVector;
00243 EType mNurbType;
00244 int mOrder;
00245 EDimension mDimension;
00246 #endif
00247 };
00248
00249 typedef KFbxNurbsCurve* HKFbxNurbsCurve;
00250 typedef class KFBX_DLL KArrayTemplate< KFbxNurbsCurve* > KArrayKFbxNurbsCurve;
00251
00252
00253 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00254
00255 #endif // FBXFILESDK_KFBXPLUGINS_KFBXNURBSCURVE_H
00256