source.hpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef SOURCE_HPP
  2. #define SOURCE_HPP
  3. #include <list>
  4. #include <fstream>
  5. #include <iostream>
  6. using namespace std;
  7. class Pump{
  8. public:
  9. double amplitude_init;
  10. double left_init,right_init,bottom_init,top_init;
  11. double delta_left_init,delta_right_init,delta_bottom_init,delta_top_init;
  12. double amplitude_final;
  13. double left_final,right_final,bottom_final,top_final;
  14. double delta_left_final,delta_right_final,delta_bottom_final,delta_top_final;
  15. double get_amplitude(double t);
  16. double get_left(double t);
  17. double get_right(double t);
  18. double get_top(double t);
  19. double get_bottom(double t);
  20. double get_left_delta(double t);
  21. double get_right_delta(double t);
  22. double get_top_delta(double t);
  23. double get_bottom_delta(double t);
  24. Pump();
  25. void save(fstream& file);
  26. void load(fstream& file);
  27. };
  28. class Cloud{
  29. public:
  30. double amplitude_init;
  31. double left_init,right_init;
  32. double delta_left_init,delta_right_init;
  33. double amplitude_final;
  34. double left_final,right_final;
  35. double delta_left_final,delta_right_final;
  36. double get_amplitude(double t);
  37. double get_amplitude_max();
  38. double get_left(double t);
  39. double get_right(double t);
  40. double get_left_delta(double t);
  41. double get_right_delta(double t);
  42. Cloud();
  43. void save(fstream& file);
  44. void load(fstream& file);
  45. };
  46. class Source{
  47. public:
  48. list<Pump*> pumps;
  49. list<Cloud*> clouds;
  50. Source();
  51. ~Source();
  52. Pump* addPump();
  53. Cloud* addCloud();
  54. void removePump(Pump* pump);
  55. void removeCloud(Cloud* cloud);
  56. void save(fstream& file);
  57. void load(fstream& file);
  58. };
  59. inline Source::Source(){
  60. }
  61. #endif