[╯°□°]╯︵┻━┻
|
00001 #ifndef PRJ_SPRING_H 00002 #define PRJ_SPRING_H 00003 00004 #include "Disp.h" 00005 #include "Force.h" 00006 #include "System.h" 00007 00008 class System; 00009 00010 class Spring:virtual public Disp, public Force{ 00011 protected: 00012 Obj* obj1; 00013 Obj* obj2; 00014 double k1;//force elastique 00015 double l0;//taille du ressort 00016 Vect attache1; 00017 Vect attache2; 00018 public: 00019 bool amorti; 00020 void setObj1(Obj&); 00021 void setObj2(Obj&); 00022 void setk1(double const& k1); 00023 void setL0(double const& newl0); 00024 virtual void force(); 00025 void disp(vector<bool> options=vector<bool>(10,false)); 00026 ostream& cdisp(ostream&); 00027 00028 //CONSTR--- 00029 Spring(Obj& obj1, Obj& obj2,double const& k,double const& l,Vect const& attache1=Vect(3),Vect const& attache2=Vect(3)); 00030 }; 00031 00032 class SpringBreak:public Spring{ 00033 protected: 00034 System* parent; 00035 double fmax; 00036 public: 00037 virtual void force(); 00038 void breakMe(); 00039 Spring::disp; 00040 Spring::cdisp; 00041 //CONSTR--- 00042 SpringBreak(System& parent,Obj& obj1, Obj& obj2,double const& k,double const& l,double const& fmax); 00043 }; 00044 00045 class SpringDeform:public SpringBreak{ 00046 private: 00047 double l1; 00048 double k2; 00049 double distMem;//memoire distance pour eloignement 00050 00051 public: 00052 Spring::disp; 00053 Spring::cdisp; 00054 virtual void force(); 00055 00056 //CONSTR--- 00057 SpringDeform(System& parent,Obj& obj1, Obj& obj2,double const& k1,double const& k2,double const& l1,double const& l2,double const& fmax); 00058 00059 }; 00060 00061 00062 00063 00064 00065 00066 #endif //PRJ_SPRING_H