Une fractale qui se construit toute seule
L'agrégation limitée par diffusion (DLA, pour diffusion-limited aggregation) n'a ni joueur ni score : c'est un procédé de croissance. Une graine est posée au centre. Des particules apparaissent au loin et errent au hasard ; dès que l'une d'elles touche l'amas, elle s'y fige définitivement. Répété des milliers de fois, ce geste minuscule fait émerger une structure fractale dendritique — la même famille de formes que le givre sur une vitre, une branche de corail ou un dépôt électrochimique. Personne ne dessine ces ramifications : elles sont la conséquence d'une règle purement locale.
La marche aléatoire, brique de base de la diffusion
Chaque particule se déplace d'une case vers l'une de ses huit voisines, tirée au sort à chaque pas. C'est une marche aléatoire, le modèle discret de la diffusion : le mouvement brownien d'une molécule dans un fluide. La particule ne vise rien, ne « cherche » pas l'amas — elle tâtonne. Le collage n'a lieu que lorsqu'elle arrive, par hasard, au contact d'une cellule déjà agrégée. Je vérifie ce contact sur une grille d'occupation : un simple tableau typé où chaque cellule retient l'ordre d'arrivée de la particule qui l'a remplie.
Pourquoi la forme se ramifie
L'asymétrie naît d'un biais géométrique. Une pointe qui dépasse de l'amas a statistiquement plus de chances d'intercepter une particule errante qu'un creux, protégé par ses voisines. Les extrémités captent donc l'essentiel du flux et croissent plus vite, tandis que l'intérieur reste vide : c'est cet écrantage qui produit les branches fines et l'aspect aéré, jamais un disque plein. Je colore d'ailleurs chaque cellule selon son ordre d'arrivée, de l'ambre au centre à l'indigo en périphérie : on lit ainsi l'histoire de la croissance, du cœur ancien vers les pointes récentes.
Faire tenir des milliers de marches en temps réel
Une marche aléatoire pure est terriblement lente : livrée à elle-même, une particule peut dériver à l'infini sans jamais revenir. J'applique donc deux optimisations classiques. Un rayon de lancement adaptatif : les particules n'apparaissent pas n'importe où, mais sur un cercle qui épouse la taille courante de l'amas — inutile de les faire naître au bout du monde. Et une réapparition immédiate dès qu'une particule s'éloigne trop : au lieu de suivre une trajectoire perdue jusqu'à sa fin, je la recycle sur le cercle de lancement. Plusieurs particules avancent à chaque image, et la croissance reste fluide sans jamais bloquer la boucle de rendu.
Ce que ce procédé dit de mon travail
Une forme complexe et organique peut naître d'une règle triviale répétée — à condition de dompter son coût. C'est exactement l'équilibre que je vise sur vos projets : un cœur de logique simple et lisible, entouré des quelques optimisations ciblées qui le rendent tenable à l'échelle réelle, sans jamais le complexifier inutilement. Un système dont on comprend le principe et les performances est un système que vous maîtrisez, que vous faites évoluer et dont vous restez pleinement propriétaire.