00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _NURBSCURVE_H
00013 #define _NURBSCURVE_H
00014
00015 #include "Geometry.h"
00016
00017 #ifndef _SL_FLOAT_ARRAY_PROXY_EXPORT_
00018 #define _SL_FLOAT_ARRAY_PROXY_EXPORT_
00019
00020
00021
00022
00023 #endif // _SL_FLOAT_ARRAY_PROXY_EXPORT_
00024
00025
00029 class XSIEXPORT CSLNurbsCurve
00030 : public CSLGeometry
00031 {
00032 public:
00036 typedef CSLArrayProxy<SI_Float, SI_Float, 1> CSLFloatArray;
00037
00041 typedef CSLArrayProxy<CSIBCVector4D, SI_Float, 4> CSLVector4DArray;
00042
00046 enum EParametrizationType
00047 {
00048 SI_UNIFORM,
00049 SI_NON_UNIFORM,
00050 SI_CHORD_LENGTH,
00051 SI_CENTRIPETAL,
00052 };
00053
00060 CSLNurbsCurve(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00061
00064 virtual ~CSLNurbsCurve();
00065
00069 SI_Int GetDegree();
00070
00075 SI_Void SetDegree(SI_Int in_nValue);
00076
00080 SI_Bool GetClosedFlag();
00081
00086 SI_Void SetClosedFlag(SI_Bool in_bValue);
00087
00091 EParametrizationType GetParametrization();
00092
00097 SI_Void SetParametrization(EParametrizationType in_Type);
00098
00102 SI_Int GetKnotCount();
00103
00107 CSLFloatArray* GetKnotList();
00108
00112 SI_Float* GetKnotListPtr();
00113
00117 SI_Int GetControlPointCount();
00118
00122 CSLVector4DArray* GetControlPointList();
00123
00127 CSIBCVector4D* GetControlPointListPtr();
00128
00133 virtual SI_Error Synchronize();
00134
00138 virtual ETemplateType Type() { return SI_NURBS_CURVE; }
00139
00140 private:
00141 CSLIntProxy m_Degree;
00142 CSLBoolProxy m_Closed;
00143 CSLEnumProxy<EParametrizationType, SI_CENTRIPETAL> m_Parametrization;
00144 CSLFloatArray m_Knots;
00145 CSLVector4DArray m_ControlPoints;
00146
00147 void *m_pReserved;
00148 };
00149
00150 #endif
00151