Nantes Université
Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
Aerial Image
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de paquets
Registre de conteneurs
Registre de modèles
Opération
Environnements
Modules Terraform
Surveillance
Incidents
Service d'assistance
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Joan DEFOSSE
Aerial Image
Validations
7b4d2adb
Valider
7b4d2adb
rédigé
3 years ago
par
Joan DEFOSSE
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Ajout de documentation concernant FireSimulator.h
parent
09dde9fe
Branches
Branches contenant la validation
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
2
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
2 fichiers modifiés
FireSimulator.cpp
+6
-2
6 ajouts, 2 suppressions
FireSimulator.cpp
FireSimulator.h
+37
-1
37 ajouts, 1 suppression
FireSimulator.h
avec
43 ajouts
et
3 suppressions
FireSimulator.cpp
+
6
−
2
Voir le fichier @
7b4d2adb
...
@@ -16,7 +16,9 @@ FireSimulator::FireSimulator(Image& img, int i, int j) {
...
@@ -16,7 +16,9 @@ FireSimulator::FireSimulator(Image& img, int i, int j) {
assert
(
img
.
getPixel
(
i
,
j
)
==
Color
::
Green
);
assert
(
img
.
getPixel
(
i
,
j
)
==
Color
::
Green
);
pImg
=
&
img
;
Image
cpImg
(
img
);
pImg
=
&
cpImg
;
Analyst
a
(
img
);
Analyst
a
(
img
);
...
@@ -50,6 +52,8 @@ FireSimulator::~FireSimulator() {
...
@@ -50,6 +52,8 @@ FireSimulator::~FireSimulator() {
vector
<
Image
>
FireSimulator
::
runSimulator
(
int
n
)
{
vector
<
Image
>
FireSimulator
::
runSimulator
(
int
n
)
{
assert
(
n
>=
0
);
vector
<
Image
>
tab
;
vector
<
Image
>
tab
;
tab
.
push_back
(
getImage
());
tab
.
push_back
(
getImage
());
...
@@ -73,7 +77,7 @@ void FireSimulator::nextStage() {
...
@@ -73,7 +77,7 @@ void FireSimulator::nextStage() {
return
;
return
;
}
}
extinguishFire
();
if
(
experienceTime
>=
3
)
extinguishFire
();
vector
<
int
>
riskArea
=
unsafeList
();
vector
<
int
>
riskArea
=
unsafeList
();
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
FireSimulator.h
+
37
−
1
Voir le fichier @
7b4d2adb
...
@@ -15,9 +15,13 @@
...
@@ -15,9 +15,13 @@
using
std
::
set
;
using
std
::
set
;
// Représente un feu sur le pixel k, allumé lors de l'étape lightTime.
struct
Fire
{
struct
Fire
{
// Pixel incendié.
int
k
;
int
k
;
// Naissance de l'incendie sur ce pixel.
int
lightTime
;
int
lightTime
;
};
};
...
@@ -31,35 +35,67 @@ class FireSimulator {
...
@@ -31,35 +35,67 @@ class FireSimulator {
public:
public:
// Prépare les données pour une simulation d'incendie sur l'image img, dans la zone
// de forêt du pixel k.
FireSimulator
(
Image
&
img
,
int
k
);
FireSimulator
(
Image
&
img
,
int
k
);
// Prépare les données pour une simulation d'incendie sur l'image img, dans la zone
// de forêt du pixel de coordonnées (i,j).
FireSimulator
(
Image
&
img
,
int
i
,
int
j
);
FireSimulator
(
Image
&
img
,
int
i
,
int
j
);
// Destructeur, désalloue la mémoire.
~
FireSimulator
();
~
FireSimulator
();
// Fais avancer la simulation de n étapes.
// Retourne les images de chacune des étapes effectuées.
vector
<
Image
>
runSimulator
(
int
n
);
vector
<
Image
>
runSimulator
(
int
n
);
// Fais avancer la simulation d'une étape.
void
nextStage
();
void
nextStage
();
// Retourne l'image de la simulation à l'étape courante.
Image
getImage
();
Image
getImage
();
// Retourne l'étape courante.
int
getTime
();
int
getTime
();
private:
private:
// Repère temporel sur l'état de la simulation. Commence à 0 et s'incrémente à chaque étape.
int
experienceTime
;
int
experienceTime
;
// Une copie modifiable de l'image de départ de la simulation.
Image
*
pImg
;
Image
*
pImg
;
set
<
int
>
limitZone
,
dustZone
;
// Définit la zone de forêt dans laquelle l'incendie se déclare. Il ne peut se propager en dehors.
set
<
int
>
limitZone
;
// Définit l'ensembe des pixels de cendres, issues d'un incendie qui s'est éteint. Un feu ne peut pas s'y déclarer.
set
<
int
>
dustZone
;
// Définit la zone incendiée. Chaque pixel dans cette zone y est pour une durée temporaire (3 temps).
set
<
Fire
>
fireZone
;
set
<
Fire
>
fireZone
;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// Détermine aléatoirement l'emplacement du départ de feu parmi les pixels de limitZone.
// L'ajoute à fireZone. Appelée une fois au début de l'expérience.
void
lightFire
();
void
lightFire
();
// Vérifie quels feux doivent être éteints, les retire de fireZone et les ajoute à dustzone.
// Appelée à chaque stade de l'expérience à partir du 3e temps.
void
extinguishFire
();
void
extinguishFire
();
// Incrémente experienceTime et actualise l'image courante.
void
runTime
();
void
runTime
();
// Actualise l'image courante à partir de fireZone et dustZone.
void
refreshImage
();
void
refreshImage
();
// Vrai si le pixel de coordonnées (i2, j2) est une zone de forêt qui touche une zone de flammes.
bool
isUnsafe
(
int
i1
,
int
j1
,
int
i2
,
int
j2
);
bool
isUnsafe
(
int
i1
,
int
j1
,
int
i2
,
int
j2
);
// Liste de tous les pixels de forêt en contact avec un pixel de flammes.
vector
<
int
>
unsafeList
();
vector
<
int
>
unsafeList
();
};
};
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter