Documentation


physicalSolver.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           PhysicalSolver.h  -  description
00003                              -------------------
00004     begin                : Sat Nov 8 2003
00005     copyright            : (C) 2003 by François Faure
00006     email                : 
00007  ***************************************************************************/
00008 
00009 #ifndef animal_PHYSICAL_SOLVER_H
00010 #define animal_PHYSICAL_SOLVER_H
00011 
00012 //#include <animal/odeSolver.h>
00013 #include <animal/container_traits.h>
00014 #include <animal/value.h>
00015 
00016 namespace animal {
00017     
00018 
00038 template<
00039     class t_Positions,
00040     class t_Vector,
00041     class t_InvMasses,
00042     class t_Real>
00043 class PhysicalSolver
00044 {
00045 public: 
00047     PhysicalSolver();
00048     virtual ~PhysicalSolver();
00049 
00050     typedef t_Positions Positions;  
00051     typedef t_Vector Vector; 
00052     typedef typename container_traits<Vector>::value_type Vec; 
00053   typedef t_InvMasses InvMasses;  
00054   typedef typename container_traits<InvMasses>::value_type InvMass; 
00055     typedef t_Real Real;     
00056 
00061   virtual void computeAccelerations( Vector& acc, const Positions& pos, const Vector& vel );
00062 
00067   virtual void applyForces( Vector& acc, const Vector& forces );
00068 
00070   void applyExponentialDamping( Vector& v, Real dt );
00071 
00073   virtual void computeForces( Vector& acc, const Positions& pos, const Vector& vel );
00074 
00075 
00079   virtual void set_gravity( const Vec& _newVal);
00081   virtual const Vec& get_gravity();
00083   virtual void set_useGravity( const bool& _newVal);
00085   virtual const bool& get_useGravity();
00087   void applyGravity( Vector& a );
00093   virtual void set_useExponentialDamping( const bool& _newVal);
00095   virtual const bool& get_useExponentialDamping();
00097   virtual void set_exponentialDamping( const Real& _newVal);
00099   virtual const Real& get_exponentialDamping();
00105   virtual void set_useMass( const bool& _newVal);
00107   virtual const bool& get_useMass();
00109   virtual void set_useSingleMass( const bool& _newVal);
00111   virtual const bool& get_useSingleMass();
00113   virtual void set_singleInvMass( const InvMass& _newVal);
00115   virtual const InvMass& get_singleInvMass();
00117   virtual void set_invMasses( InvMasses* _newVal);
00119   virtual const InvMasses* get_invMasses();
00122 //protected: // Protected attributes
00124   Vec _gravity;
00126   bool _useGravity;
00128   Real _exponentialDamping;
00130   InvMasses* _invMasses;
00132   bool _useExponentialDamping;
00134   InvMass _singleInvMass;
00136   static Vec zero(){ return Value<Vec>::zero(); }
00138   bool _useMass;
00140   bool _useSingleMass;
00141 };
00142 
00143 }//animal
00144 
00145 
00146 #endif

Generated on Thu Dec 23 13:52:27 2004 by doxygen 1.3.6