00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _NURBSCURVE_H
00025 #define _NURBSCURVE_H
00026
00027 #include "Geometry.h"
00028
00029 #ifndef _SL_FLOAT_ARRAY_PROXY_EXPORT_
00030 #define _SL_FLOAT_ARRAY_PROXY_EXPORT_
00031
00032
00033
00034
00035 #endif // _SL_FLOAT_ARRAY_PROXY_EXPORT_
00036
00037
00039 class XSIEXPORT CSLNurbsCurve
00040 : public CSLGeometry
00041 {
00042 public:
00046 typedef CSLArrayProxy<SI_Float, SI_Float, 1> CSLFloatArray;
00047
00051 typedef CSLArrayProxy<CSIBCVector4D, SI_Float, 4> CSLVector4DArray;
00052
00056 enum EParametrizationType
00057 {
00058 SI_UNIFORM,
00059 SI_NON_UNIFORM,
00060 SI_CHORD_LENGTH,
00061 SI_CENTRIPETAL,
00062 };
00063
00070 CSLNurbsCurve(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00071
00074 virtual ~CSLNurbsCurve();
00075
00079 SI_Int GetDegree();
00080
00085 SI_Void SetDegree(SI_Int in_nValue);
00086
00090 SI_Bool GetClosedFlag();
00091
00096 SI_Void SetClosedFlag(SI_Bool in_bValue);
00097
00101 EParametrizationType GetParametrization();
00102
00107 SI_Void SetParametrization(EParametrizationType in_Type);
00108
00112 SI_Int GetKnotCount();
00113
00117 CSLFloatArray* GetKnotList();
00118
00122 SI_Float* GetKnotListPtr();
00123
00127 SI_Int GetControlPointCount();
00128
00132 CSLVector4DArray* GetControlPointList();
00133
00137 CSIBCVector4D* GetControlPointListPtr();
00138
00143 virtual SI_Error Synchronize();
00144
00148 virtual ETemplateType Type() { return SI_NURBS_CURVE; }
00149
00150 private:
00151 CSLIntProxy m_Degree;
00152 CSLBoolProxy m_Closed;
00153 CSLEnumProxy<EParametrizationType, SI_CENTRIPETAL> m_Parametrization;
00154 CSLFloatArray m_Knots;
00155 CSLVector4DArray m_ControlPoints;
00156
00157 void *m_pReserved;
00158 };
00159
00160 #endif
00161