14.2 Interprétation par la tortue

Ce premier exemple vous a permis d’appréhender la notion de système de Lindenmayer sans toutefois peut-être discerner comment nous allons utiliser cela concrètement avec la tortue.

C’est là que cela devient intéressant : Chacun des mots ainsi construits ne possède pas de signification particulière. On va alors attacher à chacune des lettres de la séquence, une commande à exécuter par la tortue et générer ainsi des dessins en 2D ou en 3D.

14.2.1 Symboles usuels

Prenons par exemple α = 90 et un déplacement unitaire de 10 pas de tortue, on obtient alors :










Symbole F + - & ^ \ |









Commande XLogo av 10 tg 90 td 90 pique 90 cabre 90 rg 90 rd 90 td 180









14.2.2 Flocon de Koch

Considérons le L-system :

Premières itérations :

PIC

PIC

PIC
PIC

Programme en Logo :

 
pour flocon :p  
donne "unit 300/puissance 3 :p-1  
repete 3 [F :p-1 td 120]  
fin  
 
pour f :p  
si :p=0 [av :unit stop]  
F :p-1 tg 60 F :p-1 td 120 F :p-1 tg 60  
F :p-1  
fin  

14.2.3 Courbe de Koch d’ordre 2

Intéressons-nous le L-system suivant :

Voici les premières représentations en utilisant α = 90 et en ajustant le pas unitaire de telle sorte que la figure fasse toujours la même taille :

PIC

PIC

PIC
PIC

Il est alors très facile de créer le programme Logo permettant de générer ces dessins :

# p désigne l’itération  
pour koch :p  
# Entre chaque itération, la distance unitaire est divisée par 4  
# Ici, la figure finale aura une taille de 600x600 au maximum  
donne "unit 300/puissance 4 :p-1  
 
repete 3 [F :p-1 tg 90] F :p-1  
fin  
 
# La chaine de réécriture  
pour F :p  
si :p=0 [av :unit stop]  
F :p-1 tg 90 F :p-1 td 90 F :p-1 td 90  
F :p-1 F :p-1 tg 90 F :p-1 tg 90 F :p-1 td 90 F :p-1  
fin

14.2.4 Courbe du dragon

pour a :p  
si :p=0 [av :unit stop]  
a :p-1 tg 90 b :p-1 tg 90  
fin  
 
pour b :p  
si :p=0 [av :unit stop]  
td 90 a :p-1 td 90 b :p-1  
 
fin  
 
pour dragon :p  
donne "unit 300/8/ :p  
a :p  
fin

PIC

dragon 10

PIC

dragon 15

14.2.5 Courbe de Hilbert en 3D

L’exemple suivant traite de la courbe de Hilbert dans l’espace, c’est une courbe qui a la propriété de remplir parfaitement un cube quand on augmente le nombre d’itérations.

Voici le L-system associé :

pour hilbert :p  
ve perspective  
donne "unit 400/puissance 2 :p  
lignedef ftc :unit/2  
a :p  
lignefin  
vue3d  
fin  
 
pour a :p  
si :p=0 [stop]  
b :p-1 td 90 av :unit tg 90  c :p-1 av :unit c :p-1  
tg 90 av :unit td 90 d :p-1 pique 90 av :unit cabre 90 d :p-1  
td 90 av :unit tg 90 pique 180 c :p-1 av :unit c :p-1  
tg 90 av :unit tg 90 b :p-1 rd 180  
fin  
 
pour b :p  
si :p=0 [stop]  
a :p-1 pique 90 av :unit cabre 90 c :p-1 av :unit b :p-1 cabre 90  
av :unit cabre 90 d :p-1 cabre 180 td 90 av :unit td 90 d :p-1 cabre 90  
td 180 av :unit cabre 90 b :p-1 td 180 av :unit c :p-1 cabre 90 av :unit  
cabre 90 a :p-1 rd 180  
fin  
 
pour c :p  
si :p=0 [stop]  
td 180 d :p-1 cabre 90 td 180 av :unit cabre 90 b :p-1 td 90 av :unit tg 90  
c :p-1 cabre 90 av :unit cabre 90 a :p-1 pique 180 av :unit a :p-1 pique 90  
av :unit cabre 90 c :p-1 tg 90 av :unit tg 90 b :p-1 cabre 90 av :unit cabre 90  
d :p-1 rd 180  
fin  
 
pour d :p  
si :p=0 [stop]  
td 180 c :p-1 av :unit b :p-1 td 90 av :unit tg 90 b :p-1 td 180  
av :unit a :p-1 pique 90 av :unit cabre 90 a :p-1 pique 180 av :unit  
b :p-1 td 90 av :unit tg 90 b :p-1 td 180 av :unit c :p-1 rd 180  
fin

Et les premières itérations obtenues :

PIC

PIC

PIC
PIC