00001
00002
00004
00005 #ifndef NURBSSURFACE
00006 #define NURBSSURFACE
00007
00008 #include "X3DTypes.h"
00009 #include "X3D_X3DParametricGeometryNode.h"
00010
00011 namespace X3DTK {
00012 namespace X3D {
00013
00014 class X3DTextureCoordinateNode;
00015
00020
00021 class NurbsSurface : public X3DParametricGeometryNode
00022 {
00023 public:
00025 NurbsSurface();
00027 NurbsSurface(const MFVec3f &controlPoint,
00028 X3DTextureCoordinateNode *texCoord,
00029 const SFInt32 &uTesselation,
00030 const SFInt32 &vTesselation,
00031 const MFDouble &weight,
00032 const SFBool &ccw,
00033 const SFBool &solid,
00034 const SFInt32 &uDimension,
00035 const SFInt32 &vDimension,
00036 const MFDouble &uKnot,
00037 const MFDouble &vKnot,
00038 const SFInt32 &uOrder,
00039 const SFInt32 &vOrder);
00041 virtual SFAbstractNode clone() const;
00043 virtual ~NurbsSurface();
00044
00046 void setControlPoint(const MFVec3f &controlPoint);
00048 void setTexCoord(X3DTextureCoordinateNode *texCoord);
00050 void setUTesselation(const SFInt32 &uTesselation);
00052 void setVTesselation(const SFInt32 &vTesselation);
00054 void setWeight(const MFDouble &weight);
00056 void setCcw(const SFBool &ccw);
00058 void setSolid(const SFBool &solid);
00060 void setUDimension(const SFInt32 &uDimension);
00062 void setVDimension(const SFInt32 &vDimension);
00064 void setUKnot(const MFDouble &uKnot);
00066 void setVKnot(const MFDouble &vKnot);
00068 void setUOrder(const SFInt32 &uOrder);
00070 void setVOrder(const SFInt32 &vOrder);
00071
00073 inline const MFVec3f &getControlPoint() const {return _controlPoint;};
00075 inline const SFNode &getTexCoord() const {return _texCoord;};
00077 inline const SFInt32 &getUTesselation() const {return _uTesselation;};
00079 inline const SFInt32 &getVTesselation() const {return _vTesselation;};
00081 inline const MFDouble &getWeight() const {return _weight;};
00083 inline const SFBool &getCcw() const {return _ccw;};
00085 inline const SFBool &getSolid() const {return _solid;};
00087 inline const SFInt32 &getUDimension() const {return _uDimension;};
00089 inline const SFInt32 &getVDimension() const {return _vDimension;};
00091 inline const MFDouble &getUKnot() const {return _uKnot;};
00093 inline const MFDouble &getVKnot() const {return _vKnot;};
00095 inline const SFInt32 &getUOrder() const {return _uOrder;};
00097 inline const SFInt32 &getVOrder() const {return _vOrder;};
00098
00100 virtual bool addChild(const SFAbstractNode &N);
00102 virtual bool setChild(const SFAbstractNode &N);
00104 virtual bool removeChild(const SFAbstractNode &N);
00105
00107 virtual void load(const X3DFileElement *element);
00109 virtual SFString &write(SFString &output) const;
00110
00111 protected:
00113 NurbsSurface(const NurbsSurface &N);
00114
00115 private:
00117 MFVec3f _controlPoint;
00119 SFNode _texCoord;
00121 SFInt32 _uTesselation;
00123 SFInt32 _vTesselation;
00125 MFDouble _weight;
00127 SFBool _ccw;
00129 SFBool _solid;
00131 SFInt32 _uDimension;
00133 SFInt32 _vDimension;
00135 MFDouble _uKnot;
00137 MFDouble _vKnot;
00139 SFInt32 _uOrder;
00141 SFInt32 _vOrder;
00142 };
00143
00144 }
00145 }
00146
00147 #endif