00001 #ifndef X3DTK_X3D_NURBSPOSITIONINTERPOLATOR 00002 #define X3DTK_X3D_NURBSPOSITIONINTERPOLATOR 00003 00004 #include "X3DTypes.h" 00005 #include "X3D_X3DInterpolatorNode.h" 00006 00007 namespace X3DTK { 00008 namespace X3D { 00009 00018 class NurbsPositionInterpolator : public X3DInterpolatorNode 00019 { 00020 public: 00022 NurbsPositionInterpolator(); 00024 NurbsPositionInterpolator(const SFBool &fractionAbsolute, 00025 const SFInt32 &dimension, 00026 const MFFloat &key, 00027 const MFVec3f &keyValue, 00028 const MFDouble &keyWeight, 00029 const MFDouble &knot, 00030 const SFInt32 &order); 00032 virtual SFAbstractNode clone() const; 00034 virtual ~NurbsPositionInterpolator(); 00035 00037 void setFractionAbsolute(const SFBool &fractionAbsolute); 00039 void setDimension(const SFInt32 &dimension); 00041 void setKeyValue(const MFVec3f &keyValue); 00043 void setKeyWeight(const MFDouble &keyWeight); 00045 void setKnot(const MFDouble &knot); 00047 void setOrder(const SFInt32 &order); 00048 00050 inline const SFBool &getFractionAbsolute() const {return _fractionAbsolute;}; 00052 inline const SFInt32 &getDimenstion() const {return _dimension;}; 00054 inline const MFVec3f &getKeyValue() const {return _keyValue;}; 00056 inline const MFDouble &getKeyWeight() const {return _keyWeight;}; 00058 inline const MFDouble &getKnot() const {return _knot;}; 00060 inline const SFInt32 &getOrder() const {return _order;}; 00061 00063 virtual void load(const X3DFileElement *element); 00065 virtual SFString &write(SFString &output) const; 00066 00067 protected: 00069 NurbsPositionInterpolator(const NurbsPositionInterpolator &N); 00070 00071 private: 00073 SFBool _fractionAbsolute; 00075 SFInt32 _dimension; 00077 MFVec3f _keyValue; 00079 MFDouble _keyWeight; 00081 MFDouble _knot; 00083 SFInt32 _order; 00084 }; 00085 00086 } 00087 } 00088 00089 #endif