DLA-Fire-Prediction-Thesis 1.0
|
00001 #ifndef _FIREPATH_H_ 00002 #define _FIREPATH_H_ 00003 00004 #include "ngl/Obj.h" 00005 #include "ngl/ShaderManager.h" 00006 #include "ngl/TransformStack.h" 00007 #include "ngl/Vector.h" 00008 00009 #include "FuelObject.h" 00010 #include "FuelPoint.h" 00011 00012 //---------------------------------------------------------------------------------------------------------------------- 00024 //---------------------------------------------------------------------------------------------------------------------- 00025 00026 class FirePath 00027 { 00028 public: 00029 //---------------------------------------------------------------------------------------------------------------------- 00039 //---------------------------------------------------------------------------------------------------------------------- 00040 FirePath( 00041 std::vector<FuelPoint> _allDLAList, 00042 std::vector<FuelPoint> _allDLALine, 00043 std::vector<FuelPoint> _fuelList, 00044 float _approxObjMoisture, 00045 std::vector<FuelPoint> _originList, 00046 bool _windStatus, 00047 int _windSpeed, 00048 ngl::Vector _windDirection 00049 ); 00050 00051 //---------------------------------------------------------------------------------------------------------------------- 00055 //---------------------------------------------------------------------------------------------------------------------- 00056 void drawDLAPath( 00057 const std::string &_shaderName, 00058 ngl::TransformStack &_transformStack 00059 ); 00060 00061 //---------------------------------------------------------------------------------------------------------------------- 00065 //---------------------------------------------------------------------------------------------------------------------- 00066 void updateDLAList( 00067 std::vector<FuelPoint> _allDLAList, 00068 std::vector<FuelPoint> _allDLALine 00069 ); 00070 00071 //---------------------------------------------------------------------------------------------------------------------- 00074 //---------------------------------------------------------------------------------------------------------------------- 00075 void updateFuelOnGrid( 00076 std::vector<FuelPoint> _fuelOnGridList 00077 ); 00078 00079 //---------------------------------------------------------------------------------------------------------------------- 00081 //---------------------------------------------------------------------------------------------------------------------- 00082 void resetFuel(); 00083 00084 //---------------------------------------------------------------------------------------------------------------------- 00087 //---------------------------------------------------------------------------------------------------------------------- 00088 std::vector<FuelPoint> getCurrentFuelList(); 00089 00090 //---------------------------------------------------------------------------------------------------------------------- 00092 //---------------------------------------------------------------------------------------------------------------------- 00093 void resetFuelListToOriginal(); 00094 00095 //---------------------------------------------------------------------------------------------------------------------- 00098 //---------------------------------------------------------------------------------------------------------------------- 00099 void timeUpdate( 00100 int _time 00101 ); 00102 00103 //---------------------------------------------------------------------------------------------------------------------- 00105 //---------------------------------------------------------------------------------------------------------------------- 00106 void resetList(); 00107 00108 //---------------------------------------------------------------------------------------------------------------------- 00110 //---------------------------------------------------------------------------------------------------------------------- 00111 void controlFirePathColour(); 00112 00113 //---------------------------------------------------------------------------------------------------------------------- 00116 //---------------------------------------------------------------------------------------------------------------------- 00117 void assignNewMoisture( 00118 double _newMoisture 00119 ); 00120 00121 //---------------------------------------------------------------------------------------------------------------------- 00124 //---------------------------------------------------------------------------------------------------------------------- 00125 void assignNewTemp( 00126 double _newTemp 00127 ); 00128 00129 //---------------------------------------------------------------------------------------------------------------------- 00131 //---------------------------------------------------------------------------------------------------------------------- 00132 void setFirePath(); 00133 00134 //---------------------------------------------------------------------------------------------------------------------- 00137 //---------------------------------------------------------------------------------------------------------------------- 00138 void assignNewObjMoisture( 00139 float _newObjMoisture 00140 ); 00141 00142 //---------------------------------------------------------------------------------------------------------------------- 00144 //---------------------------------------------------------------------------------------------------------------------- 00145 void analyzeBurningArea(); 00146 00147 //---------------------------------------------------------------------------------------------------------------------- 00150 //---------------------------------------------------------------------------------------------------------------------- 00151 void setNewOriginList( 00152 std::vector<FuelPoint> _newOriginList 00153 ); 00154 00155 //---------------------------------------------------------------------------------------------------------------------- 00158 //---------------------------------------------------------------------------------------------------------------------- 00159 void analyzeDLAAmount( 00160 int m_newTime 00161 ); 00162 00163 //---------------------------------------------------------------------------------------------------------------------- 00166 //---------------------------------------------------------------------------------------------------------------------- 00167 void resetGrid( 00168 std::vector<FuelPoint> _currentGridPoint 00169 ); 00170 00171 //---------------------------------------------------------------------------------------------------------------------- 00174 //---------------------------------------------------------------------------------------------------------------------- 00175 void pauseTheAnimation(bool _status); 00176 00177 //---------------------------------------------------------------------------------------------------------------------- 00181 //---------------------------------------------------------------------------------------------------------------------- 00182 int getIndexNumber( 00183 ngl::Vector m_position 00184 ); 00185 00186 //---------------------------------------------------------------------------------------------------------------------- 00191 //---------------------------------------------------------------------------------------------------------------------- 00192 void transferHeat( 00193 int m_gridIndex, 00194 int m_heat, 00195 int m_mode 00196 ); 00197 00198 //---------------------------------------------------------------------------------------------------------------------- 00200 //---------------------------------------------------------------------------------------------------------------------- 00201 void calculateRateOfGrowth(); 00202 00203 //---------------------------------------------------------------------------------------------------------------------- 00207 //---------------------------------------------------------------------------------------------------------------------- 00208 bool checkCollisionWithBurningArea( 00209 ngl::Vector m_currentPos 00210 ); 00211 00212 //---------------------------------------------------------------------------------------------------------------------- 00215 //---------------------------------------------------------------------------------------------------------------------- 00216 void showFireLineOnly( 00217 bool _showingLineOnlyStatus 00218 ); 00219 private: 00220 //---------------------------------------------------------------------------------------------------------------------- 00222 //---------------------------------------------------------------------------------------------------------------------- 00223 std::vector<FuelPoint> m_fireDLAForm; 00224 //---------------------------------------------------------------------------------------------------------------------- 00226 //---------------------------------------------------------------------------------------------------------------------- 00227 std::vector<FuelPoint> m_fireDLALine; 00228 //---------------------------------------------------------------------------------------------------------------------- 00230 //---------------------------------------------------------------------------------------------------------------------- 00231 std::vector<FuelPoint> m_fuelOnGridList; 00232 //---------------------------------------------------------------------------------------------------------------------- 00234 //---------------------------------------------------------------------------------------------------------------------- 00235 std::vector<FuelPoint> m_originalFuelOnGridList; 00236 //---------------------------------------------------------------------------------------------------------------------- 00238 //---------------------------------------------------------------------------------------------------------------------- 00239 std::vector<FuelPoint> m_gridList; 00240 //---------------------------------------------------------------------------------------------------------------------- 00242 //---------------------------------------------------------------------------------------------------------------------- 00243 std::vector<FuelPoint> m_originList; 00244 //---------------------------------------------------------------------------------------------------------------------- 00246 //---------------------------------------------------------------------------------------------------------------------- 00247 std::vector<FuelPoint> m_currentIndexForm; 00248 //---------------------------------------------------------------------------------------------------------------------- 00250 //---------------------------------------------------------------------------------------------------------------------- 00251 std::vector<FuelPoint> m_burningPointList; 00252 00253 //---------------------------------------------------------------------------------------------------------------------- 00255 //---------------------------------------------------------------------------------------------------------------------- 00256 int m_timeStep; 00257 //---------------------------------------------------------------------------------------------------------------------- 00259 //---------------------------------------------------------------------------------------------------------------------- 00260 int m_currentDLAPointIndex; 00261 //---------------------------------------------------------------------------------------------------------------------- 00263 //---------------------------------------------------------------------------------------------------------------------- 00264 bool m_allShow; 00265 00266 //---------------------------------------------------------------------------------------------------------------------- 00268 //---------------------------------------------------------------------------------------------------------------------- 00269 float m_rateOfGrowth; 00270 00271 //---------------------------------------------------------------------------------------------------------------------- 00273 //---------------------------------------------------------------------------------------------------------------------- 00274 double m_sceneMoisture; 00275 //---------------------------------------------------------------------------------------------------------------------- 00277 //---------------------------------------------------------------------------------------------------------------------- 00278 double m_sceneTemp; 00279 //---------------------------------------------------------------------------------------------------------------------- 00281 //---------------------------------------------------------------------------------------------------------------------- 00282 float m_objMoisture; 00283 //---------------------------------------------------------------------------------------------------------------------- 00285 //---------------------------------------------------------------------------------------------------------------------- 00286 bool m_pause; 00287 00288 //---------------------------------------------------------------------------------------------------------------------- 00290 //---------------------------------------------------------------------------------------------------------------------- 00291 ngl::Vector m_windDirection; 00292 //---------------------------------------------------------------------------------------------------------------------- 00294 //---------------------------------------------------------------------------------------------------------------------- 00295 int m_windSpeed; 00296 //---------------------------------------------------------------------------------------------------------------------- 00298 //---------------------------------------------------------------------------------------------------------------------- 00299 bool m_windEnable; 00300 //---------------------------------------------------------------------------------------------------------------------- 00302 //---------------------------------------------------------------------------------------------------------------------- 00303 bool m_onlyLine; 00304 00305 }; // end class 00306 00307 //---------------------------------------------------------------------------------------------------------------------- 00308 00309 #endif // _FIREPATH_H_