[╯°□°]╯︵┻━┻
|
00001 #ifndef PRJ_FORCE_H 00002 #define PRJ_FORCE_H 00003 00004 #include "Obj.h" 00005 #include <set> 00006 #include "CouldBeInseredToSystem.h" 00007 00008 using namespace std; 00009 00010 class Force:virtual public CouldBeInseredToSystem{ 00011 public: 00012 virtual void force()=0; 00013 }; 00014 00015 //MAGNET 00016 class Magnet:public Obj, public Force{ 00017 protected: 00019 public: 00021 virtual void force(); 00022 }; 00023 00024 00025 //GRAV 00026 class ObjG:virtual public Obj, virtual public Force{ 00027 protected: 00028 set<Obj*>* tabGrav; 00029 public: 00030 ObjG(set<Obj*> & tabObj,Vect const& x,double const& mass, Vect const& dx=Vect(3), Vect const& ang=Vect(3), Vect const& mcin=Vect(3)); 00031 virtual void force(); 00032 Obj::init; 00033 Obj::cdisp; 00034 Obj::disp; 00035 Obj::supportPoint; 00036 }; 00037 00038 00039 //CHARG 00040 class ObjC:virtual public Obj, virtual public Force{ 00041 protected: 00042 set<ObjC*>* tabCharg; 00043 double c;//charge electrique 00044 public: 00045 Vect elecField; 00046 Vect magnetField; 00047 void setC(double const& charge); 00048 double getC() const; 00049 ObjC(set<ObjC*> & tabCharg, Vect const& x,double const& mass, double const& charg, 00050 Vect const& dx=Vect(3), Vect const& ang=Vect(3), Vect const& mcin=Vect(3)); 00051 virtual void force(); 00052 virtual void update(); 00053 virtual void init(); 00054 Obj::disp; 00055 ostream& cdisp(ostream&); 00056 Obj::supportPoint; 00057 00058 }; 00059 00060 00061 //GRAV+CHARG 00062 class ObjCG: public ObjC, public ObjG{ 00063 public: 00064 ObjCG(set<Obj*> & tabObj,set<ObjC*> & tabC, Vect const& x,double const& mass, double const& charg, 00065 Vect const& dx=Vect(3), Vect const& ang=Vect(3), Vect const& mcin=Vect(3)); 00066 virtual void force(); 00067 ObjC::init; 00068 ObjC::update; 00069 ObjC::cdisp; 00070 Obj::disp; 00071 Obj::supportPoint; 00072 }; 00073 00074 00075 #endif //PRJ_FORCE_H 00076