00001 // StreamLine.h: interface for the StreamLine class. 00002 // 00004 00005 #if !defined(AFX_SL_STREAMLINE_H__04E22EE9_17CB_4C47_A9D2_DE2D7A6BDD0E__INCLUDED_) 00006 #define AFX_SL_STREAMLINE_H__04E22EE9_17CB_4C47_A9D2_DE2D7A6BDD0E__INCLUDED_ 00007 00008 #if _MSC_VER > 1000 00009 #pragma once 00010 #endif // _MSC_VER > 1000 00011 00012 #include "misc.h" 00013 #include "GlobalState.h" 00014 00015 00016 #include <vector> 00017 #include <list> 00018 00019 using namespace std; 00020 00021 #include "SL_Interpolation.h" 00022 #include "SL_Inter_Euler.h" 00023 #include "SL_Inter_RungeKutter2.h" 00024 00025 #include "SL_Grid.h" 00026 #include "SL_Base.h" 00027 00028 //class SL_Interpolation; 00029 class SL_Interpolation; 00030 class SL_Inter_Euler; 00031 class SL_Inter_RungeKutter2; 00032 00033 //class SL_Inter_RungeKutter4; 00034 00035 class SL_Grid; 00036 00037 class SL_StreamLine //:public CSL_Base 00038 { 00039 public: 00040 SL_StreamLine(); 00041 //SL_StreamLine( SL_Grid* refToGrid ); 00042 SL_StreamLine( SL_Grid* refToGrid, CGlobalState* refState ); 00043 virtual ~SL_StreamLine(); 00044 00045 //bool AddStreamLineToGrid(); 00046 00047 void SetInterpolationMode( int iMode ); 00048 00049 00050 //bool CreateStreamLine( float posx, float posy ); 00051 // bool CreateStreamLine( const Vec2f dot ); 00052 00053 //bool CreateStreamLine_directional( const Vec2f startDot, bool followFlow ); 00054 00055 bool CreateStreamLine_bidirectional( const Vec2f startDot ); 00056 00057 //bool CreateStreamLine_directional( float posx, float posy, bool followFlow ); 00058 00060 //bool CreateNewDot( const Vec2f* currentDot, bool interForward ); 00061 00063 bool CreateNewSeedPoint( const Vec2f currentDot, 00064 //const Vec2f currentSpeed, 00065 Vec2f &leftDot, Vec2f &rightDot ); 00066 00067 //bool CreateNeibourLines(); 00068 00069 void DrawGL(); 00070 00071 protected: 00074 //void remove(); 00075 00077 //void SetDotStepSize( float fDistDots, float fDsep ); 00078 00079 00080 public: 00081 enum InterpolMode{ EULER = 1,RUNGE_KUTTER1, RENGE_KUTTER2 }; 00082 vector< Vec2f > elements; 00083 //vector< Vec2f > elementsSpeed; 00084 00085 protected: 00086 int interpolationMode; 00087 SL_Interpolation* interpolationPtr; 00088 00089 SL_Grid* refGrid; 00090 00091 //CGlobalState* refState; 00092 00094 //float fDistanceDots; 00095 00097 float m_fDsep; 00098 00099 CGlobalState* refState; 00100 00101 }; 00102 00103 #endif // !defined(AFX_SL_STREAMLINE_H__04E22EE9_17CB_4C47_A9D2_DE2D7A6BDD0E__INCLUDED_)