DLA-Fire-Prediction-Thesis 1.0
|
00001 #ifndef _DLASTRUCTURE_H_ 00002 #define _DLASTRUCTURE_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 //---------------------------------------------------------------------------------------------------------------------- 00028 //---------------------------------------------------------------------------------------------------------------------- 00029 00030 class DLAStructure 00031 { 00032 public: 00033 //---------------------------------------------------------------------------------------------------------------------- 00035 //---------------------------------------------------------------------------------------------------------------------- 00036 DLAStructure(); 00037 00038 //---------------------------------------------------------------------------------------------------------------------- 00049 //---------------------------------------------------------------------------------------------------------------------- 00050 DLAStructure( 00051 std::vector<FuelPoint> _gridPointList, 00052 std::vector<FuelObject> _objectPointList, 00053 ngl::Vector _originPoint, 00054 int _sceneWidth, 00055 int _sceneHeight, 00056 float _pointRadius, 00057 int _dlaSize, 00058 ngl::Vector _windDirection, 00059 int _windSpeed 00060 ); 00061 00062 //---------------------------------------------------------------------------------------------------------------------- 00076 //---------------------------------------------------------------------------------------------------------------------- 00077 DLAStructure( 00078 std::vector<FuelPoint> _gridPointList, 00079 std::vector<FuelObject> _objectPointList, 00080 ngl::Vector _originPoint, 00081 int _sceneWidth, 00082 int _sceneHeight, 00083 float _pointRadius, 00084 std::vector<FuelPoint> _previousDLAPoint, 00085 std::vector<FuelPoint> _otherOriginList, 00086 int _currentOriginIndex, 00087 int _dlaSize, 00088 ngl::Vector _windDirection, 00089 int _windSpeed 00090 ); 00091 00092 //---------------------------------------------------------------------------------------------------------------------- 00095 //---------------------------------------------------------------------------------------------------------------------- 00096 void findPath( 00097 FuelPoint m_originPoint 00098 ); 00099 00100 //---------------------------------------------------------------------------------------------------------------------- 00105 //---------------------------------------------------------------------------------------------------------------------- 00106 void assignDLA( 00107 ngl::Vector m_newDLAPoint, 00108 ngl::Vector m_seed, 00109 int m_generationNumber 00110 ); 00111 00112 //---------------------------------------------------------------------------------------------------------------------- 00116 //---------------------------------------------------------------------------------------------------------------------- 00117 ngl::Vector moveRandomPoint( 00118 ngl::Vector m_currentPoint, 00119 int m_mode 00120 ); 00121 00122 //---------------------------------------------------------------------------------------------------------------------- 00127 //---------------------------------------------------------------------------------------------------------------------- 00128 int findFarthestPos( 00129 int m_numberOne, 00130 int m_numberTwo, 00131 int m_numberThree 00132 ); 00133 00134 //---------------------------------------------------------------------------------------------------------------------- 00138 //---------------------------------------------------------------------------------------------------------------------- 00139 int findMaximumSide( 00140 ngl::Vector m_travelerPos, 00141 ngl::Vector m_seedPos 00142 ); 00143 00144 //---------------------------------------------------------------------------------------------------------------------- 00150 //---------------------------------------------------------------------------------------------------------------------- 00151 int findSideOfMaximumPosition( 00152 ngl::Vector m_travelerPos, 00153 ngl::Vector m_seedPos, 00154 int m_maximumSide 00155 ); 00156 00157 //---------------------------------------------------------------------------------------------------------------------- 00160 //---------------------------------------------------------------------------------------------------------------------- 00161 int checkCollision( 00162 ngl::Vector m_travelerPos 00163 ); 00164 00165 //---------------------------------------------------------------------------------------------------------------------- 00170 //---------------------------------------------------------------------------------------------------------------------- 00171 ngl::Vector getRandomPosition ( 00172 ngl::Vector m_currentPos, 00173 float m_radius, 00174 int m_randomMode 00175 ); 00176 00177 //---------------------------------------------------------------------------------------------------------------------- 00181 //---------------------------------------------------------------------------------------------------------------------- 00182 float setDecimalValue( 00183 float m_number, 00184 int m_decimalPlaces 00185 ); 00186 00187 //---------------------------------------------------------------------------------------------------------------------- 00191 //---------------------------------------------------------------------------------------------------------------------- 00192 ngl::Vector checkBoundary( 00193 ngl::Vector m_newDLAPoint 00194 ); 00195 00196 //---------------------------------------------------------------------------------------------------------------------- 00199 //---------------------------------------------------------------------------------------------------------------------- 00200 int checkCollisionWithNonFlammableObject( 00201 ngl::Vector m_newDLAPoint 00202 ); 00203 00204 //---------------------------------------------------------------------------------------------------------------------- 00206 //---------------------------------------------------------------------------------------------------------------------- 00207 void adaptPoint(); 00208 00209 //---------------------------------------------------------------------------------------------------------------------- 00212 //---------------------------------------------------------------------------------------------------------------------- 00213 float getCurrentYPos( 00214 ngl::Vector m_currentDLAPos 00215 ); 00216 00217 //---------------------------------------------------------------------------------------------------------------------- 00220 //---------------------------------------------------------------------------------------------------------------------- 00221 std::vector<FuelPoint> getDLAList(); 00222 00223 //---------------------------------------------------------------------------------------------------------------------- 00226 //----------------------------------------------------------------------------------------------------------------------- 00227 std::vector<FuelPoint> getDLALine(); 00228 00229 //---------------------------------------------------------------------------------------------------------------------- 00231 //---------------------------------------------------------------------------------------------------------------------- 00232 void arrangeList(); 00233 00234 //---------------------------------------------------------------------------------------------------------------------- 00237 //---------------------------------------------------------------------------------------------------------------------- 00238 int checkCollisionWithOtherDLA( 00239 ngl::Vector m_newDLAPoint 00240 ); 00241 00242 //---------------------------------------------------------------------------------------------------------------------- 00245 //---------------------------------------------------------------------------------------------------------------------- 00246 int checkCollisionWithOtherOrigin( 00247 ngl::Vector m_newDLAPoint 00248 ); 00249 private: 00250 //---------------------------------------------------------------------------------------------------------------------- 00252 //---------------------------------------------------------------------------------------------------------------------- 00253 int m_sceneWidth; 00254 //---------------------------------------------------------------------------------------------------------------------- 00256 //---------------------------------------------------------------------------------------------------------------------- 00257 int m_sceneHeight; 00258 00259 //---------------------------------------------------------------------------------------------------------------------- 00261 //---------------------------------------------------------------------------------------------------------------------- 00262 std::vector<FuelPoint> m_scenePointList; 00263 //---------------------------------------------------------------------------------------------------------------------- 00265 //---------------------------------------------------------------------------------------------------------------------- 00266 std::vector<FuelPoint> m_dlaLine; 00267 //---------------------------------------------------------------------------------------------------------------------- 00269 //---------------------------------------------------------------------------------------------------------------------- 00270 std::vector<FuelPoint> m_dlaList; 00271 //---------------------------------------------------------------------------------------------------------------------- 00273 //---------------------------------------------------------------------------------------------------------------------- 00274 std::vector<FuelObject> m_objList; 00275 00276 //---------------------------------------------------------------------------------------------------------------------- 00278 //---------------------------------------------------------------------------------------------------------------------- 00279 float m_circleRadius; 00280 //---------------------------------------------------------------------------------------------------------------------- 00282 //---------------------------------------------------------------------------------------------------------------------- 00283 float m_pointRadius; 00284 //---------------------------------------------------------------------------------------------------------------------- 00286 //---------------------------------------------------------------------------------------------------------------------- 00287 float m_dlaPointDistance; 00288 //---------------------------------------------------------------------------------------------------------------------- 00290 //---------------------------------------------------------------------------------------------------------------------- 00291 int m_dlaSize; 00292 00293 //---------------------------------------------------------------------------------------------------------------------- 00295 //---------------------------------------------------------------------------------------------------------------------- 00296 ngl::Vector m_originSeed; 00297 00298 //---------------------------------------------------------------------------------------------------------------------- 00300 //---------------------------------------------------------------------------------------------------------------------- 00301 std::vector<FuelPoint> m_otherOriginList; 00302 00303 //---------------------------------------------------------------------------------------------------------------------- 00305 //---------------------------------------------------------------------------------------------------------------------- 00306 bool m_checkForm; 00307 00308 //---------------------------------------------------------------------------------------------------------------------- 00310 //---------------------------------------------------------------------------------------------------------------------- 00311 ngl::Vector m_windDir; 00312 //---------------------------------------------------------------------------------------------------------------------- 00314 //---------------------------------------------------------------------------------------------------------------------- 00315 int m_windSpeed; 00316 //---------------------------------------------------------------------------------------------------------------------- 00318 //---------------------------------------------------------------------------------------------------------------------- 00319 bool m_windEnabled; 00320 //---------------------------------------------------------------------------------------------------------------------- 00322 //---------------------------------------------------------------------------------------------------------------------- 00323 std::vector<FuelPoint> m_previousDLAList; 00324 //---------------------------------------------------------------------------------------------------------------------- 00326 //---------------------------------------------------------------------------------------------------------------------- 00327 int m_currentOriginIndex; 00328 //---------------------------------------------------------------------------------------------------------------------- 00330 //---------------------------------------------------------------------------------------------------------------------- 00331 int m_distanceForm; 00332 00333 }; // end class 00334 00335 #endif // _DLASTRUCTURE_H_ 00336 00337 //----------------------------------------------------------------------------------------------------------------------