Pour toutes les courbes que nous avons produites avec la tortue Logo, le Pen de SMALLTALK, les seules représentations de la courbe sont soit le programme “Logo” même, soit le résultat de son exécution: le dessin. Aucune représentation manipulable par programme n’existe.
Si nous représentons les commandes Logo comme des lettres, nous pouvons obtenir une représentation explicite des courbes de la manière suivante: dénommons par “F” la transmission “pen go: uneLongueur”, par “-” la transmission “pen turn: 60” et par “+” la transmission “pen turn: -60”. Ensuite, décrivons une premère droite avec: D0 = F. Pour transformer cette droite en une courbe de Koch, nous devons remplacer D0 par D1 = D0 - D0 + + D0 - D0, et, d’une manière générale, le nième niveau de la courbe de Koch peut être exprimé comme:
Ceci est clairement une définition récursive qui nous donne pour chaque niveau une description détaillée de la courbe de Koch. Ainsi si nous changeons légèrement notre représentation, en donnant pour D0 le code pour le dessin que nous voulons obtenir au niveau zéro, pour une courbe de Koch c’est une simple droite, donc F, nous pouvons réécrire nos règles comme:
|
F F → F − F + + F − F | (5.1) |
L’opérateur “→” dit que la partie gauche peut être réécrite comme la partie droite. C’est une règle de réécriture. S’il y a plusieurs règles de réécriture, nous parlons d’un système de réécriture. Un tel système peut contenir un nombre quelconque de règles de réécriture. Durant chaque application d’une règle, les occurrences de la partie gauche de la règle, dans la chaîne subissant la réécriture, sont remplacées par la partie droite de cette même règle. Les caractères pour lesquels aucune règle n’existe (ils ne sont partie gauche d’aucune règle) sont réécrits tels quels, comme s’il y avait des règles implicites du style:
des règles de réécriture à l’identité. Notons aussi que, dans nos examples, l’application des règles commence toujours par la chaîne de niveau 0, l’axiome du système de réécriture actuel.
Voici alors les premiers trois niveaux d’application de la règle de réécriture 5.1
ci-dessus.:
axiome: F
premiére application de la règle:
deuxième application de la règle:
troisième application de la règle:
F − F + + F − F − F − F + + F − F + + F − F + + F − F − F − F
+ + F − F − F − F + + F − F − F − F + + F − F + + F − F + +
F − F − F − F + + F − F + + F − F + + F − F − F − F + + F − F
+ + F − F + + F − F − F − F + + F − F − F − F + + F − F − F−
F + + F − F + + F − F + + F − F − F − F + + F − F
Ces chaînes d’instructions “Logo abrévié” décrivent très bien chacune des courbes. On y voit clairement qu’au niveau zéro la courbe de Koch est réduite à une droite: il n’y a qu’une seule occurrence de F. Au premier niveau la courbe se compose de quatre segments: il y a 4 occurrences de F; au niveau deux elle est composée de 16 segments, et au niveau trois de 64 segments. À chaque niveau, chacun des segments précédents est divisé en quatre nouveaux segments.
Les signes + et − donnent l’angle, respectivement vers la droite et vers la gauche, que les différents segments forment entre eux. Ainsi nous disposons d’une description beaucoup plus détaillée de la courbe que celle que nous avons dans le programme Logo de la page 662 qui construit la même courbe. De plus, l’écriture des règles de réécriture nécessaires pour obtenir ces descriptions est plus compacte que l’écriture du programme Logo juste mentionné.
Cette forme de règles de réécriture, qui s’appelle un système de Lindenmayer ou simplement un L-système, a été inventés dans les années 1960 par le biologiste théorique Aristide Lindenmayer [45] pour modéliser des mécanismes de croissance des cellules et des plantes. De tels systèmes sont magistralement présentés dans les deux livres de Przemyslaw Prusinkiewicz [63] et [64].