00001
00002
00004
00005 #ifndef COORDINATEDEFORMER
00006 #define COORDINATEDEFORMER
00007
00008 #include "X3DTypes.h"
00009 #include "X3D_X3DGroupingNode.h"
00010 #include "X3D_X3DBoundedObject.h"
00011
00012 namespace X3DTK {
00013 namespace X3D {
00014
00019
00020 class CoordinateDeformer : public X3DGroupingNode, public X3DBoundedObject
00021 {
00022 public:
00024 CoordinateDeformer();
00026 CoordinateDeformer(const MFVec3f &controlPoint,
00027 const MFNode &inputCoord,
00028 const MFNode &inputTransform,
00029 const MFNode &outputCoord,
00030 const MFFloat &weight);
00032 virtual SFAbstractNode clone() const;
00034 virtual ~CoordinateDeformer();
00035
00037 virtual MFAbstractNode getChildrenList() const;
00038
00040 virtual bool addChild(const SFAbstractNode &N);
00042 virtual bool setChild(const SFAbstractNode &N);
00043
00045 void setControlPoint(const MFVec3f &controlPoint);
00047 void setInputCoord(const MFNode &inputCoord);
00049 void setInputTransform(const MFNode &inputTransform);
00051 void setOutputCoord(const MFNode &outputCoord);
00053 void setWeight(const MFFloat &weight);
00054
00056 inline const MFVec3f &getControlPoint() const {return _controlPoint;};
00058 inline const MFNode &getInputCoord() const {return _inputCoord;};
00060 inline const MFNode &getInputTransform() const {return _inputTransform;};
00062 inline const MFNode &getOutputCoord() const {return _outputCoord;};
00064 inline const MFFloat &getWeight() const {return _weight;};
00065
00067 virtual void load(const X3DFileElement *element);
00069 virtual SFString &write(SFString &output) const;
00070
00071 protected:
00073 CoordinateDeformer(const CoordinateDeformer &N);
00074
00075 private:
00077 MFVec3f _controlPoint;
00079 MFNode _inputCoord;
00081 MFNode _inputTransform;
00083 MFNode _outputCoord;
00085 MFFloat _weight;
00087 SFInt32 _uDimension;
00089 MFDouble _uKnot;
00091 SFInt32 _uOrder;
00093 SFInt32 _vDimension;
00095 MFDouble _vKnot;
00097 SFInt32 _vOrder;
00099 SFInt32 _wDimension;
00101 MFDouble _wKnot;
00103 SFInt32 _wOrder;
00104 };
00105
00106 }
00107 }
00108
00109 #endif