00001 #ifndef X3DTK_X3D_NURBSSURFACE 00002 #define X3DTK_X3D_NURBSSURFACE 00003 00004 #include "X3DTypes.h" 00005 #include "X3D_X3DParametricGeometryNode.h" 00006 00007 namespace X3DTK { 00008 namespace X3D { 00009 00010 class X3DTextureCoordinateNode; 00011 00020 class NurbsSurface : public X3DParametricGeometryNode 00021 { 00022 public: 00024 NurbsSurface(); 00026 NurbsSurface(const MFVec3f &controlPoint, 00027 X3DTextureCoordinateNode *texCoord, 00028 const SFInt32 &uTesselation, 00029 const SFInt32 &vTesselation, 00030 const MFDouble &weight, 00031 const SFBool &ccw, 00032 const SFBool &solid, 00033 const SFInt32 &uDimension, 00034 const SFInt32 &vDimension, 00035 const MFDouble &uKnot, 00036 const MFDouble &vKnot, 00037 const SFInt32 &uOrder, 00038 const SFInt32 &vOrder); 00040 virtual SFAbstractNode clone() const; 00042 virtual ~NurbsSurface(); 00043 00045 void setControlPoint(const MFVec3f &controlPoint); 00047 void setTexCoord(X3DTextureCoordinateNode *texCoord); 00049 void setUTesselation(const SFInt32 &uTesselation); 00051 void setVTesselation(const SFInt32 &vTesselation); 00053 void setWeight(const MFDouble &weight); 00055 void setCcw(const SFBool &ccw); 00057 void setSolid(const SFBool &solid); 00059 void setUDimension(const SFInt32 &uDimension); 00061 void setVDimension(const SFInt32 &vDimension); 00063 void setUKnot(const MFDouble &uKnot); 00065 void setVKnot(const MFDouble &vKnot); 00067 void setUOrder(const SFInt32 &uOrder); 00069 void setVOrder(const SFInt32 &vOrder); 00070 00072 inline const MFVec3f &getControlPoint() const {return _controlPoint;}; 00074 inline const SFNode &getTexCoord() const {return _texCoord;}; 00076 inline const SFInt32 &getUTesselation() const {return _uTesselation;}; 00078 inline const SFInt32 &getVTesselation() const {return _vTesselation;}; 00080 inline const MFDouble &getWeight() const {return _weight;}; 00082 inline const SFBool &getCcw() const {return _ccw;}; 00084 inline const SFBool &getSolid() const {return _solid;}; 00086 inline const SFInt32 &getUDimension() const {return _uDimension;}; 00088 inline const SFInt32 &getVDimension() const {return _vDimension;}; 00090 inline const MFDouble &getUKnot() const {return _uKnot;}; 00092 inline const MFDouble &getVKnot() const {return _vKnot;}; 00094 inline const SFInt32 &getUOrder() const {return _uOrder;}; 00096 inline const SFInt32 &getVOrder() const {return _vOrder;}; 00097 00099 virtual bool addChild(const SFAbstractNode &N); 00101 virtual bool setChild(const SFAbstractNode &N); 00103 virtual bool removeChild(const SFAbstractNode &N); 00104 00106 virtual void load(const X3DFileElement *element); 00108 virtual SFString &write(SFString &output) const; 00109 00110 protected: 00112 NurbsSurface(const NurbsSurface &N); 00113 00114 private: 00116 MFVec3f _controlPoint; 00118 SFNode _texCoord; 00120 SFInt32 _uTesselation; 00122 SFInt32 _vTesselation; 00124 MFDouble _weight; 00126 SFBool _ccw; 00128 SFBool _solid; 00130 SFInt32 _uDimension; 00132 SFInt32 _vDimension; 00134 MFDouble _uKnot; 00136 MFDouble _vKnot; 00138 SFInt32 _uOrder; 00140 SFInt32 _vOrder; 00141 }; 00142 00143 } 00144 } 00145 00146 #endif