Projet d'Informatique 2012
Simulation générique de systèmes physiques simples : vers les machines de Rube Goldberg
include/Systeme.h
Aller à la documentation de ce fichier.
00001 
00005 #ifndef SYSTEME_H
00006 #define SYSTEME_H
00007 
00008 #include <iostream>
00009 #include <vector>
00010 #include <memory>
00011 #include "Integrateur.h"
00012 #include "ObjetMobile.h"
00013 #include "ChampForces.h"
00014 #include "ObjetCompose.h"
00015 #include "Obstacle.h"
00016 
00022 class Systeme : public QObject
00023 {
00024         Q_OBJECT
00025 
00026     public:
00032         Systeme(double const& dt = 0.01, int const& integrateur = int(TypeIntegrateur::Euler));
00033 
00038         Systeme(Systeme const&) = delete;
00039 
00044         Systeme& operator=(Systeme const&) = delete;
00045 
00049         void evolue();
00050 
00060         friend std::ostream& operator<<(std::ostream& out, Systeme const& a_afficher);
00061 
00065         void dessine() const;
00066 
00071         std::vector< std::unique_ptr<ObjetMobile> >& objets_mobiles();
00072 
00077         std::vector< std::unique_ptr<Obstacle> >& obstacles();
00078 
00083         std::vector< std::unique_ptr<ChampForces> >& champs();
00084 
00089         double dt() const;
00090 
00091     public slots:
00092 
00097         void set_dt(double const& new_dt);
00098 
00103         void ajoute(ObjetMobile* objet);
00104 
00109         void ajoute(Obstacle* obstacle);
00110 
00115         void ajoute(ChampForces* champ);
00116 
00121         void ajoute(ObjetCompose* objet);
00122 
00127         void set_integrateur(int const& index);
00128 
00132         void reset();
00133 
00134     private:
00138         std::vector< std::unique_ptr<ObjetMobile> > m_objets_mobiles;
00139 
00143         std::vector< std::unique_ptr<Obstacle> >  m_obstacles;
00144 
00148         std::vector< std::unique_ptr<ChampForces> > m_champs;
00149 
00153         std::unique_ptr<Integrateur> m_integrateur;
00154 
00155     signals:
00156 
00161         void newObjet(ObjetMobile* objet);
00162 
00167         void newObstacle(Obstacle* obstacle);
00168 
00173         void newChamp(ChampForces* champ);
00174 
00175 };
00176 
00177 #endif /* SYSTEME_H */
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Énumérations Valeurs énumérées Amis