AnimaL |
Tutorial |
Documentation |
00001 00002 // massSpringNode.h // 00004 //ff03 00005 00006 #ifndef MASS_SPRING_NODE_H 00007 #define MASS_SPRING_NODE_H 00008 00009 /*#include <X3DTK/private/X3D_X3DBoundedObject.h> 00010 #include <X3DTK/private/X3D_X3DChildNode.h>*/ 00011 #include <animal/engine/massSpringEngine.h> 00012 #include <animal/engine/AnimalEngineNode.h> 00013 00014 namespace X3DTK 00015 { 00016 00018 typedef animal::MassSpringEngine< X3DTK::MFFloat, //Masses 00019 X3DTK::MFVec3f, //Velocities 00020 X3DTK::MFFloat, //SpringStiffness 00021 X3DTK::MFInt32, //IndexedSprings 00022 X3DTK::MFVec3f, //Points 00023 float> AMassSpringEngine; 00024 00025 namespace X3D 00026 { 00027 00029 00030 //class MassSpringNode : public EngineNode, public AMassSpringEngine 00031 class MassSpringNode : public AnimalEngineNode<AMassSpringEngine>//, public X4DNode 00032 { 00033 public: 00035 MassSpringNode(); 00036 00038 ~MassSpringNode(); 00039 00042 virtual void init(); 00043 virtual void close(); 00044 00046 virtual void updateBoundingBox(){} 00047 00050 inline Coordinate* getCoordinate() const { return _coordinate; } 00051 void declareOutputs( X3D_X3DNodeList& list ); 00052 MFVec3f* getCoords(); 00053 MFVec3f* getVelocities(); 00054 MFFloat* getInvMasses(); 00055 00056 private: 00058 Coordinate* _coordinate; 00060 MFFloat _invMassesX3D; 00062 MFVec3f _velocitiesX3D; 00064 MFFloat _stiffnessesX3D; 00066 MFFloat _restLengthsX3D; 00068 MFInt32 _linksX3D; 00069 00070 // /// The integration method to apply 00071 // SFInt32 _integrationMethod; 00072 00074 //AMassSpringEngine * _massSpringEngine; 00075 00077 //SFFloat _dampingRatio; 00078 00080 //SFFloat _exponentialDamping; 00081 00083 //SFVec3f _gravity; 00084 }; 00085 00086 }// X3D 00087 }//X3DTK 00088 00089 #endif 00090