00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _CONTACT_POINT_H_
00022 #define _CONTACT_POINT_H_
00023
00024 #include <vamos/body/Particle.h>
00025 #include <vamos/geometry/Material.h>
00026
00027 class Vamos_Geometry::Inertia_Tensor;
00028
00029 namespace Vamos_Body
00030 {
00031
00032
00033 class Contact_Point : public Particle
00034 {
00035 protected:
00036
00037 bool m_contact;
00038
00039 virtual void find_forces ();
00040
00041 virtual void end_timestep ();
00042
00043 public:
00044
00045
00046
00047 Contact_Point (double mass, const Vamos_Geometry::Three_Vector& position,
00048 const Vamos_Geometry::Three_Matrix& orientation,
00049 Vamos_Geometry::Material::Material_Type type,
00050 double friction, double restitution);
00051
00052
00053 Contact_Point (double mass, const Vamos_Geometry::Three_Vector& position,
00054 Vamos_Geometry::Material::Material_Type type,
00055 double friction, double restitution);
00056
00057
00058 Contact_Point ();
00059
00060
00061
00062
00063
00064 virtual double contact (const Vamos_Geometry::Three_Vector& position,
00065 const Vamos_Geometry::Inertia_Tensor& inertia,
00066 const Vamos_Geometry::Three_Vector& velocity,
00067 double distance,
00068 const Vamos_Geometry::Three_Vector& normal,
00069 const Vamos_Geometry::Three_Vector& ang_velocity,
00070 Vamos_Geometry::Material_Handle material);
00071
00072 virtual bool single_contact () const { return true; }
00073 };
00074 }
00075
00076 #endif // not _CONTACT_POINT_H_