![]() |
Projet d'Informatique 2012
Simulation générique de systèmes physiques simples : vers les machines de Rube Goldberg
|
00001 00005 #ifndef OBJETMOBILE_H 00006 #define OBJETMOBILE_H 00007 00008 #include <string> 00009 #include <iostream> 00010 #include "Vecteur.h" 00011 #include "Element.h" 00012 #include "Couleur.h" 00013 00014 class Systeme; 00015 00021 class ObjetMobile : public Element 00022 { 00023 public: 00024 00034 ObjetMobile(Vecteur const& omega = Vecteur(3), Vecteur const& d_omega = Vecteur(3), double const& rayon = 1, double const& masse_volumique = 1, Vecteur const& force = Vecteur(3), Couleur const& color = Couleur(1,1,1,1)); 00035 00040 ObjetMobile(size_t const& taille); 00041 00045 virtual ~ObjetMobile(); 00046 00052 virtual Vecteur evolution() const = 0; 00053 00058 virtual double distance(ObjetMobile const& objet) const; 00059 00064 virtual void agit_sur(ObjetMobile& objet); 00065 00070 virtual void ajoute_a(Systeme* syst); 00071 00076 virtual void ajoute_force(Vecteur const& df); 00077 00083 double masse() const; 00084 00089 Vecteur const& omega() const; 00090 00095 Vecteur const& d_omega() const; 00096 00101 Vecteur const& force() const; 00102 00107 double const& rayon() const; 00108 00113 double const& masse_volumique() const; 00114 00119 void set_omega(Vecteur const& new_omega); 00120 00125 void set_d_omega(Vecteur const& new_d_omega); 00126 00132 virtual Vecteur position() const = 0; 00133 00139 virtual Vecteur vitesse() const = 0; 00140 00145 virtual void set_vitesse(Vecteur const& new_vitesse) = 0; 00146 00150 void reset_force(); 00151 00152 protected: 00153 00157 Couleur m_couleur; 00158 00159 private: 00163 Vecteur m_omega; 00164 00168 Vecteur m_d_omega; 00169 00173 double const m_rayon; 00174 00178 double const m_masse_volumique; 00179 00183 Vecteur m_force; 00184 }; 00185 00186 #endif