Automates Cellulaires
Le tas de sable
Cette applet modélise un tas de sable et permet de simuler le phénomène
d'avalanche.
Elle permet d'observer les caractéristiques de la propagation
des grains de sable en fonction:
- de l'écart nécessaire entre deux
colonnes de sable pour qu'il y ait chute effective de grains de la
colonne la plus haute sur la plus basse.
-
des différentes directions dans lesquelles les grains de sable peuvent
chuter, à savoir 4 ou 8 directions réparties de façon homogène.
Plus précisemment, un grain peut tomber dans 4 directions (en haut, en bas, à gauche ou à droite) ou 8
directions (les 4 précédentes plus les 4 diagonales).
 |
 |
4 directions |
8 directions |
Modélisation
Nous modélisons ceci à l'aide d'un automate cellulaire dont chaque
cellule est un entier représentant le nombre de
grains de sable superposés en ce point. La chute d'un grain de sable
correspond au transfert d'une unité entre la cellule d'où provient le
grain et la cellule qui le receptionne. Le transfert de grains entre 2
cellules adajacentes est contraint par le paramètre "seuil". C'est un
entier positif qui représente la différence de hauteur minimale entre
deux grains de sable pour que l'un tombe sur l'autre.
Implémentation
L'algorithme initial prévoyait le transfert d'un grain à la fois entre
les cellules. Mais l'évolution visuelle étant trop lente nous avons
décidé d'implémenter à chaque étape la chute simultanée de plusieurs
grains.
Les cellules de l'automate sont représentées par des carrés et les
différentes directions de
propagation de l'avalanche(cf. modélisation) par les cotés ou les
angles de ces carrés. Lorsque le paramètre "nbVoisins" est fixé à quatre, un grain ne
peut chuter que dans une cellule ayant un côté commun avec celle dont il provient.
S'il est fixé à 8, il peut également être transféré vers l'une des cellules
située dans les angles par rapport à la cellule d'origine.
Résultats
Les règles simples de notre modélisation permettent l'émergence d'un
comportement complexe analogue aux phénomènes naturels tels que les
avalanches ou la propagation des incendies de forêt.
Lorsque le seuil a une valeur élevée, il y a peu de chutes et le
comportement se rapproche de celui d'un solide. Lorsque la valeur est
faible, les grains de sable tombent facilement et on se rapproche alors
du comportement d'un liquide. Le seuil s'apparente un peu à la
viscosité.
Chaque cellule de l'automate est représenté par un pixel dont la
couleur dépend de la hauteur de la cellule. Les couleurs vont de jaune
(très bas) à rouge (très haut). Le noir indique qu'il n'y a pas de sable
sur la cellule.
- Largeur/Hauteur: Dimensions du terrain en pixels
- Seuil: différence de hauteur entre deux points pour qu'un grain de sable tombe
- nb Voisins: nombre de voisins pris en considération pour une cellule donnée.
 |
 |
nombre de voisins = 4 |
nombre de voisins = 8 |
- Hauteur max: hauteur maximale (en nombre de grains de sables) en un point donné du terrain
- Init prend en compte les nouveaux paramètres, puis initialise un terrain comme spécifié (vide donne un terrain vide, random un terrain aléatoire, tas construit un tas stable)
- Start/Stop démarre ou stoppe la simulation
La simulation fait tomber du sable au centre du terrain de façon
continue. Pour déposer du sable en un autre point du terrain, il suffit
de cliquer sur ce point avec le bouton gauche de la souris. Le sable
continue de tomber tant qu'il reste appuyé, y compris pendant le
déplacement de la souris.
Télécharger les sources de l'applet