00001 00006 #ifndef __SOLVER_H__ 00007 #define __SOLVER_H__ 00008 00009 #ifdef __APPLE__ 00010 #include <GraphicsLib/Vector.h> 00011 #include <GraphicsLib/Point3.h> 00012 #else 00013 #include "Point3.h" 00014 #include "Vector.h" 00015 #endif 00016 00017 #include <vector> 00018 #include <iostream> 00019 #include "Force.h" 00020 00021 00022 namespace ParticleSystems { 00024 00031 class Solver { 00032 public: 00033 00035 00040 Solver(Force *f); 00041 00043 00046 Solver(); 00047 00049 00052 virtual ~Solver(); 00053 00055 00060 void addForce(Force *f); 00061 00063 00067 void removeForce(Force *f); 00068 00070 00073 void listForces(); 00074 00076 00081 virtual void nextStep(GraphicsLib::Vector *direction) = 0; 00082 00084 00091 virtual void nextStep(GraphicsLib::Vector *direction, float *mass) = 0; 00092 00094 00097 std::vector<Force *> forces; 00098 00100 00103 std::vector<Force *>::iterator forcesItt; 00104 00106 00109 int duration; 00110 00111 }; 00112 } 00113 #endif 00114