Incendie
|
Public Member Functions | |
Foret (int _largeur, int _hauteur, float proba=0.60, float _coefFeu=0.5, std::time_t graine=std::time(0)) | |
Foret (int _largeur, int _hauteur, std::ifstream *file, LoadProgress *PB) | |
Foret (int _largeur, int _hauteur, std::vector< std::vector< int > > *matrice, float coef_brulure) | |
virtual | ~Foret () |
void | initEmpty () |
void | setValues (int largeur, int hauteur, float coef) |
void | setWind (int angle, int vitesse) |
int | width () const |
int | height () const |
int | nbEssences () |
const Vent * | getVent () const |
std::vector< Cellule * > * | operator[] (int ligne) |
bool | tryLoadEssences (const std::string &fileName) |
void | create (int largeur, int hauteur, std::vector< std::vector< int > > *matrice) |
void | randomMatrix (float probabilite) |
void | clean () |
const std::list< Arbre * > * | getOnFire () const |
std::list< Arbre * > * | getUprooted () |
std::list< Arbre * > * | getDelayed () |
std::list< Arbre * > * | getDelayBurned () |
std::list< Arbre * > * | getCarbonized () |
std::list< Arbre * > * | getBurned () |
std::list< std::list< Arbre * > > * | getChanged () |
void | clearUprooted () |
void | clearDelayed () |
void | clearDelayBurned () |
void | clearCarbonized () |
void | clearBurned () |
void | clearChanged () |
void | plantTree (int col, int row) |
void | plantTree (int col, int row, unsigned int numEss, int PdV, float humidite, float coef, int etat) |
void | uproot (Arbre *ab) |
void | uproot (int col, int row) |
void | delay (Arbre *ab, float coef=0.5) |
void | kindle (Arbre *ab) |
void | kindle (int col, int row) |
void | blast (Arbre *ab) |
void | spark (Arbre *ab, int intensite) |
void | spark (int col, int row, int intensite) |
void | cut (int xDep, int yDep, int xArr, int yArr) |
void | delay (int xDep, int yDep, int xArr, int yArr) |
std::list< Arbre * > | adjacents (int col, int row, int distance) const |
std::list< Arbre * > | adjacents (const Arbre *ab, int distance) const |
void | sparkAdjacentsWind (int posCol, int posRow, int hor, int vert) |
void | sparkAdjacentsWind (Arbre *a, const Vent *vent) |
void | transition (Arbre *ab) |
void | transitionWind (Arbre *a, const Vent *vent) |
bool | NextMove () |
void | loadSizes (std::ifstream *file) |
void | loadBurningCoef (std::ifstream *file) |
void | loadEssences (std::ifstream *file) |
void | loadMatrix (std::ifstream *file, LoadProgress *progress) |
bool | tryLoad (std::ifstream *file, LoadProgress *progress) |
void | saveProperties (std::ofstream *file) |
void | saveEssences (std::ofstream *file) |
void | saveMatrix (std::ofstream *file) |
bool | trySave (std::string filePath="save_forest") |
bool | trySaveSeed (std::string filePath="save_forest") |
void | showEssences () const |
Foret::Foret | ( | int | _largeur, |
int | _hauteur, | ||
float | proba = 0.60 , |
||
float | _coefFeu = 0.5 , |
||
std::time_t | graine = std::time(0) |
||
) |
Constructeurs de forêt aléatoirement, à partir de paramètres
_largeur | nombre de colonnes de la matrice représentant la forêt, sa largeur |
_hauteur | nombre de lignes de la matrice, la hauteur |
proba,probabilite | qu'il y ait un arbre, pour chaque case de la matrice. C'est environ le pourcentage d'arbres |
_coefFeu | coefficient de propagation du feu : 1 forêt "classique"; <1 progression plus lente (humidité...); >1 progression plus rapide (sécheresse ?) |
Foret::Foret | ( | int | _largeur, |
int | _hauteur, | ||
std::ifstream * | file, | ||
LoadProgress * | PB | ||
) |
Constructeurs de forêt aléatoirement, à partir d'un fichier de sauvegarde
_largeur | nombre de colonnes de la matrice représentant la forêt, sa largeur |
_hauteur | nombre de lignes de la matrice, la hauteur |
file | fichier de sauvegarde d'une foret précédente, contenant les essences et l'emplacement des arbres et leur indice d'essence |
PB | barre de progression Qt, pour afficher l'avancement du chargement |
Foret::Foret | ( | int | _largeur, |
int | _hauteur, | ||
std::vector< std::vector< int > > * | matrice, | ||
float | coef_brulure | ||
) |
Constructeurs de forêt aléatoirement, à partir d'une image
_largeur | nombre de colonnes de la matrice représentant la forêt, sa largeur |
_hauteur | nombre de lignes de la matrice, la hauteur |
matrice | matrice d'intensités de couleur verte selon l'emplacement dans l'image |
|
virtual |
On vide également les listes utile ?
std::list< Arbre * > Foret::adjacents | ( | int | col, |
int | row, | ||
int | distance | ||
) | const |
Retourne les arbres qui sont proches d'une cellule donnée
col | indice de la colonne de la cellule |
row | indice de la ligne de la cellule |
distance | distance sur laquelle s'effectue la recherche de voisins |
Retourne les arbres qui sont proches d'une cellule donnée, appelle adjacents(int, int)
ab | arbre dont on veut connaître les voisins |
distance | distance sur laquelle s'effectue la recherche de voisins |
void Foret::blast | ( | Arbre * | ab | ) |
Definit un arbre comme étant en cendres
ab | arbre à mettre en cendres |
void Foret::clean | ( | ) |
Met la foret à l'état vierge : aucun arbre
void Foret::clearChanged | ( | ) |
Vide les listes d'éléments modifiés
void Foret::create | ( | int | largeur, |
int | hauteur, | ||
std::vector< std::vector< int > > * | matrice | ||
) |
Crée une foret à partir d'une matrice de niveau de couleur de vert
largeur | largeur de la foret à créer |
hauteur | hauteur de la foret à créer |
matrice | de taille largeur x hauteur, d'intensités de vert dans l'image |
void Foret::cut | ( | int | xDep, |
int | yDep, | ||
int | xArr, | ||
int | yArr | ||
) |
Coupe les arbres se trouvant dans un rectangle
all | positions de 2 points diagonaux du rectangle |
void Foret::delay | ( | Arbre * | ab, |
float | coef = 0.5 |
||
) |
Eteint un arbre en conservant ses points de vie courant
ab | arbre à éteindre |
void Foret::delay | ( | int | xDep, |
int | yDep, | ||
int | xArr, | ||
int | yArr | ||
) |
Applique un retardateur sur les arbres se trouvant dans un rectangle
all | positions de 2 points diagonaux du rectangle |
std::list< list< Arbre * > > * Foret::getChanged | ( | ) |
Retourne les listes d'éléments modfiés
void Foret::initEmpty | ( | ) |
Initialise une matrice avec des cellules (vierge)
void Foret::kindle | ( | Arbre * | ab | ) |
Definit un arbre comme étant en feu
ab | arbre à allumer |
void Foret::kindle | ( | int | col, |
int | row | ||
) |
Definit une position comme étant en feu, si c'est un arbre
all | position de l'arbre à allumer |
void Foret::loadBurningCoef | ( | std::ifstream * | file | ) |
Lit le coefficient de brulure d'une foret dans un fichier de sauvegarde
file | fichier de sauvegarde de foret |
void Foret::loadEssences | ( | std::ifstream * | file | ) |
Lit les essences d'une foret dans un fichier de sauvegarde
file | fichier de sauvegarde de foret |
void Foret::loadMatrix | ( | std::ifstream * | file, |
LoadProgress * | progress | ||
) |
Charge une foret à partir d'un fichier de sauvegarde
file | fichier de sauvegarde d'une foret |
PB | barre de progression pour suivre le chargement de la foret IMPROVEIT |
void Foret::loadSizes | ( | std::ifstream * | file | ) |
Lit les tailles d'une foret dans un fichier de sauvegarde
file | fichier de sauvegarde de foret |
bool Foret::NextMove | ( | ) |
Passe de t à t+1 tous les arbres à l'aide de la liste d'arbres en feu
void Foret::plantTree | ( | int | col, |
int | row | ||
) |
"Plante" un arbre à la position donnée dans la matrice
all | position de l'arbre dans la matrice |
void Foret::plantTree | ( | int | col, |
int | row, | ||
unsigned int | numEss, | ||
int | PdV, | ||
float | humidite, | ||
float | coef, | ||
int | etat | ||
) |
"Plante" un arbre à la position donnée dans la matrice
col | abscisse de l'arbre |
row | ordonnée de l'arbre |
numEss | indice de l'essence de l'arbre à utiliser |
void Foret::randomMatrix | ( | float | probabilite | ) |
Initialise une matrice vide puis ajoute des arbre dans la Foret
probabilite | chance qu'a un arbre d'être placé sur chaque case |
void Foret::saveEssences | ( | std::ofstream * | file | ) |
Sauvegarde les essences de la foret et leur nombre dans un fichier de sauvegarde
file | fichier où sauvegarder les données de la forêt |
void Foret::saveMatrix | ( | std::ofstream * | file | ) |
Sauvegarde les arbres de la foret dans un fichier de sauvegarde
file | fichier où sauvegarder les données de la forêt |
void Foret::saveProperties | ( | std::ofstream * | file | ) |
Sauvegarde les tailles et le coefficient de brulure de la foret dans un fichier de sauvegarde
file | fichier où sauvegarder les données de la forêt |
void Foret::setValues | ( | int | largeur, |
int | hauteur, | ||
float | coef | ||
) |
Définit/redéfinit la taille et le coefficient de brulure d'une foret
all | définit les paramètres particuliers de la forêt (en dehors du vent) |
void Foret::setWind | ( | int | angle, |
int | vitesse | ||
) |
Définit la direction du vent
angle | angle du nouveau vent |
vitesse | force du nouveau |
void Foret::showEssences | ( | ) | const |
Affiche les essences de la foret sur la sortie standard (debuggage)
void Foret::spark | ( | Arbre * | ab, |
int | intensite | ||
) |
Enflamme un arbre : un autre arbre lui "transmet" du feu
ab | arbre à enflammer |
intensite | force de transmission du feu |
void Foret::spark | ( | int | col, |
int | row, | ||
int | intensite | ||
) |
Enflamme une cellule si elle existe, selon sa position dans la matrice
row | ligne où est la cellule |
col | colonne où est la cellule |
intensite | force de transmission du feu |
void Foret::sparkAdjacentsWind | ( | int | posCol, |
int | posRow, | ||
int | hor, | ||
int | vert | ||
) |
Transmet le feu d'un arbre à ses voisins, selon la position de l'arbre
posCol | abscisse de l'arbre qui est en feu |
posRow | ordonnée de l'arbre qui est en feu |
hor | force du vent horizontalement |
vert | force du vent verticalement |
Transmet le feu d'un arbre à ses voisins, selon la position de l'arbre
a | arbre qui transmet le feu |
vent | qui influe la transmission |
void Foret::transition | ( | Arbre * | ab | ) |
Applique une transition de l'état t à l'état t+1 d'un arbre
ab | arbre en feu qui doit le transmettre |
Un arbre brule pendant une unité de temps : il enflamme les voisins en tenant compte de la direction du vent et perd des PV
a | arbre qui brule |
vent | qui influe la transmission |
bool Foret::tryLoad | ( | std::ifstream * | file, |
LoadProgress * | progress | ||
) |
Initialise la foret et rempli la matrice d'arbres à partir d"un fichier de sauvegarde
file | fichier de sauvegarde de foret |
PB | barre de progression pour suivre le chargement de la foret IMPROVEIT |
bool Foret::tryLoadEssences | ( | const std::string & | fileName | ) |
Charge des essences dans le tableau d'essences à partir d'un fichier texte Format des lignes : "Nom" "masse volumique (kg/m³)" "diametre moyen dans R" "hauteur moyenne" "type (0/1)"
fileName | nom du fichier qui contient les essences |
bool Foret::trySave | ( | std::string | filePath = "save_forest" | ) |
Sauvegarde une forêt dans un fichier (tailles-essences-arbres)
filename | chemin où sauvegarder le fichier de sauvegarde |
bool Foret::trySaveSeed | ( | std::string | filePath = "save_forest" | ) |
Sauvegarde la taille et la graine aléatoire d'une forêt
file |
void Foret::uproot | ( | Arbre * | ab | ) |
Coupe ou déracine un arbre
ab | arbre à supprimer |
void Foret::uproot | ( | int | col, |
int | row | ||
) |
Coupe ou déracine l'arbre à la position donnée
all | position de l'arbre à supprimer |