Projet C - Feux de forêts

Sujet

Le but de ce projet est de simuler de façon simpliste la propagation d'un feu dans une forêt. Celle-ci est modélisée par une matrice carrée N x N de cellules. Chaque cellule peut se trouver dans l'un des quatreétats suivants : vide, arbre, feu et cendre.

feu de forêt

Dans la configuration d'origine, chaque case de la grille est soit arbre selon une probabilité p (réglable dans la simulation) soit une case vide (avec la probabilité 1-p). On met le feu à une cellule arbre à l'instant t=0 (les instants ultérieurs sont indicés par un entier, appelé génération, noté t), puis on suit la diffusion du feu à travers la grille selon les règles suivantes (une génération représente un pas de la boucle de calcul) :

  • une case arbre prend feu à la génération t si l'une au moins de ses 4 voisines est en feu à la génération précédente,
  • les cases en feu passeront en cendres au bout de N générations (10 par exemple).

Comme dans le cas de la percolation on constate qu'il y a un seuil en probabilité ... Soit le feu s'éteint rapidement et ne se propage pas, soit tout le damier s'enflamme. Il est intéressant de voir que certaines zones sont épargnées, que le feu fait parfois demi tour ou que des zones restent en feu au milieu de région en cendres, ...

Implantation

L'aspect graphique du projet sera pris en charge par le module utv_gd (sources : utv_gd.h et utv_gd.c), qui comporte les fonctions essentielles pour ouvrir une fenêtre graphique et afficher des pixmaps.

Au niveau structure de données, il faut définir une structure modélisant la matrice de cellules, le type de chaque cellule ainsi que son état. On définira avec profit des types énumérés, comme par exemple celui des types de cellules ainsi que des constantes, comme par exemple la probabilité d'apparition d'un arbre dans une cellule ou le nombre de pas que met un arbre pour tomber en cendre.

Le programme devra comporter les étapes suivantes, chacune d'entre elles correspondant à des appels de fonctions :

  • initialisation du programme (générateur aléatoire, taille du terrain, taille de chaque cellule),
  • initialisation du terrain (type de chaque cellule),
  • chargement des pixmaps,
  • départ de l'incendie (aléatoire),
  • pas suivant de la simulation.

De plus, les fonctions suivantes devront être implantées :

  • modification du type d'une cellule,
  • interrogation sur le type d'une cellule,
  • exploration des voisins d'une cellule et retour d'un booléen indiquant si au moins l'un des voisins est en feu,
  • détection de la fin de la simulation (il n'y a plus de feu).

Enfin, le projet devra comporter un makefile qui permet de créer l'exécutable du programme de simulation ainsi que de construire la bibliothèque libutvgd.a (nécessaire au projet).

Matériel

Vous pouvez utiliser les images suivantes (il y a 2 images de feu car cela peut permettre de créer une animation basique).

image0 image1 image2 image3