Réécriture (L-systèmes)
On réécrit le texte plusieurs fois, puis chaque lettre devient un trait ou un virage. Et ça suffit à dessiner un flocon, un dragon ou une plante.
C'est quoi, la règle ?
Et si un dessin entier tenait dans une phrase de quelques lettres ? Un L-système part d'une chaîne de lettres, qu'on appelle l'axiome, et d'une règle qui dit par quoi remplacer chaque lettre. On applique la règle à toutes les lettres en même temps, puis on recommence sur le résultat. Chaque tour, c'est une génération.
F → F-F++F-F
Ensuite, une tortue lit la chaîne (comme un petit robot qui suit des ordres à la lettre). F veut dire : avance en traçant un trait. + tourne à gauche d'un angle fixé, - tourne à droite du même angle. Les crochets [ et ] mettent la position de côté, puis la retrouvent : c'est ce qui fait les branches. Les autres lettres, comme X, ne dessinent rien, elles servent juste à la réécriture.
Ici, l'axiome est F++F++F, un triangle, et l'angle est de 60°. À chaque génération, chaque trait est remplacé par quatre traits plus petits. Le texte grossit très vite (ça explose, même), mais le dessin garde la même allure.
À toi de jouer
Choisis une règle, puis monte les générations une à une. La chaîne s'affiche à côté du dessin : quand elle devient trop longue, on n'en montre que le début, avec sa longueur réelle juste en dessous. La tortue la parcourt, et le dessin est recadré à chaque génération pour tenir dans le cadre.
Le dragon et la plante ont leur propre limite de générations, sinon la page rame.
Chaîne réécrite
F++F++F
7 caractères
F → F-F++F-F
Petite précision : le dessin ci-dessus est un schéma, pas l'œuvre. Il montre la règle, point. Les couleurs, la taille des points, le grain du tirage, il les rejoue pas.
Qu'est-ce qui change d'un algo à l'autre ?
Presque tout tient dans les données : l'axiome, la règle et l'angle. Le moteur qui lit la chaîne, lui, est le même pour presque tous.
- Courbe du dragon
- Le dragon de Heighway : une bande de papier pliée en deux, encore et encore, puis dépliée à angles droits. L'œuvre n'écrit pas de règle de réécriture : elle construit directement la suite des virages, à gauche ou à droite, en pliant le papier. Le schéma du dessus passe par une règle, c'est plus simple à montrer.
- Terdragon
- Le dragon ternaire, tracé d'un seul trait. La règle est F → F+F-F, avec des virages de 120°.
- Courbe en C de Lévy
- La courbe en C de Lévy : chaque trait est remplacé par deux traits à angle droit, F → +F--F+, avec des virages de 45°.
- Flocon de Koch
- Le flocon de Koch : un triangle (F++F++F) dont chaque côté se hérisse selon F → F-F++F-F, avec des virages de 60°. La courbe est fermée, elle revient sur elle-même.
- Courbe de Koch quadratique
- La variante à angle droit : F → F+F-F-F+F, avec des virages de 90°. Chaque trait devient un créneau (comme ceux d'un château fort). Contrairement au flocon, la courbe reste ouverte.
- Pointe de flèche de Sierpiński
- La pointe de flèche de Sierpiński : un seul trait qui finit par dessiner le triangle de Sierpiński. Ici, deux lettres, F et G, tracent toutes les deux : F → G-F-G et G → F+G+F, avec des virages de 60°.
- Sierpiński (L-système)
- Le triangle de Sierpiński, mais par un autre chemin : l'axiome est F-G-G, les règles sont F → F-G+F+G-F et G → GG, avec des virages de 120°.
- Flocon de Gosper
- Le flocon de Gosper, ou flowsnake : une courbe hexagonale qui remplit l'espace. Là aussi, deux lettres tracent, F → F-G--G+F++FF+G- et G → +F-GG--G-F++F+G, avec des virages de 60°.
- Courbe de Hilbert
- La courbe de Hilbert, qui remplit le carré. Les lettres X et Y ne dessinent rien, elles servent juste à la réécriture : X → +YF-XFX-FY+ et Y → -XF+YFY+FX-, avec des virages de 90°.
- Courbe de Peano
- La courbe de Peano, une autre courbe qui remplit le carré. La chaîne est multipliée par neuf à chaque génération, contre quatre pour Hilbert : du coup, on ne peut pas monter aussi haut. Virages de 90°, règles écrites avec X et Y.
- Courbe de Moore
- La courbe de Moore, la version fermée de Hilbert : l'axiome LFL+F+LFL assemble quatre morceaux de Hilbert en boucle. Les lettres L et R ne dessinent rien, virages de 90°.
- Plante fractale
- La plante de Lindenmayer, la seule de la famille à avoir des branches (grâce aux crochets [ et ], qui mettent la position de côté). X → F+[[X]-X]-F[-FX]+X et F → FF, avec des virages de 25°. C'est aussi la seule dont l'angle peut être tiré légèrement au hasard à chaque virage.
Et le hasard, il décide quoi ?
Pour chaque œuvre, le programme tire ces réglages au sort, entre des bornes fixées à l'avance. Une fois tirés, ils bougent plus : ils font partie de l'identité de l'œuvre.
- Nombre de réécritures Courbe du dragon de 11 à 16
- Angle de virage (°) Courbe du dragon de 88 à 92
- Angle (°) Flocon de Koch de 58 à 62
Les algorithmes de cette famille
- Courbe du dragon
- Terdragon
- Courbe en C de Lévy
- Flocon de Koch
- Courbe de Koch quadratique
- Pointe de flèche de Sierpiński
- Sierpiński (L-système)
- Flocon de Gosper
- Courbe de Hilbert
- Courbe de Peano
- Courbe de Moore
- Plante fractale