00001 #pragma once 00002 #include "Texture.h" 00003 #include "StreamlineObj.h" 00004 #include <vector> 00005 #include "Streamlines.h" 00006 00008 00013 class IntegrationMethod 00014 { 00015 public: 00025 IntegrationMethod(Streamlines* stream, Texture* gridtexture, Texture* texture, float mapwidth, float mapheight,float dsep, float dtest); 00029 virtual ~IntegrationMethod(void); 00030 00031 virtual void integrate(StreamlineObj* startpos, float stepsize, int steps)=0; 00032 00033 std::vector<StreamlineObj*> values; 00034 std::vector<std::vector<std::vector<StreamlineObj*>>> map; 00035 protected: 00045 vec3 doIntegrate(vec3 value, std::vector<std::vector<float>> b, std::vector<float> c, int n, float stepsize); 00046 00058 vec3 doIntegrate(vec3 newValue6, float stepsize, float dsep, float dtest, bool forward, int lastindex, bool update); 00071 vec3 doIntegrate(vec3 newValue6, float stepsize, float dsep, float dtest, bool forward, int lastindex); 00083 vec3 doIntegrate(vec3 newValue6, float stepsize, float dsep, float dtest, bool forward); 00093 vec3 doIntegrate(vec3 newValue6, float stepsize, float dsep, float dtest); 00094 00101 void updateMap(StreamlineObj* value, StreamlineObj* pvalue, float dtest); 00102 00103 Texture* m_gridtexture; 00104 Texture* m_texture; 00105 00106 float dsep; 00107 float dtest; 00108 00109 Streamlines* m_streams; 00110 00111 friend bool collision(StreamlineObj* point, std::vector<std::vector<std::vector<StreamlineObj*>>> map, float mapwidth, float mapheight ,float dist,float dtest); 00112 };