13.1 En utilisant la récursivité

Considérons une éponge de menger d’ordre n dont le côté mesure L.

PIC

Le schéma montre bien que cette éponge est constitué en fait de 20 éponges de Menger d’ordre n- 1 ayant chacune un côté de L-
3. La structure récursive de l’éponge est ainsi mise en évidence.

Le programme :

# Commande principale: eponge 3  
pour cube :l  
si :compteur=10000 [vue3d]  
# Couleur des faces latérales  
soit "couleurs [jaune magenta cyan bleu]  
# faces latérales  
repete 4 [fcc exec item compteur :couleurs carre :l td 90 av  :l tg 90 rd 90]  
# Dessous  
fcc rouge pique 90 carre :l cabre 90  
av :l pique 90 fcc vert carre :l cabre 90 re :l  
fin  
 
pour carre :c  
donne "compteur :compteur+1  
polydef  
repete 4 [av :c td 90]  
polyfin  
fin  
 
# Eponde de Menger  
# p: profondeur de récursivité  
# l: Longueur du grand cube.  
pour menger :l :p  
si :p=0 [cube :l] [  
  soit "p :p-1  
  soit "l :l/3  
  #face avant  
  repete 3 [menger :l :p av :l] re 3*:l  
  td 90 av :l tg 90  
  menger :l :p av 2*:l menger :l :p re 2*:l  
  td 90 av :l tg 90  
  repete 3 [menger :l :p av :l] re 3*:l  
  #Côté droit  
 pique 90 av :l cabre 90  
  menger :l :p  av 2*:l menger :l :p re 2*:l  
  pique 90 av :l cabre 90  
  repete 3 [menger :l :p av :l] re 3*:l  
  tg 90 av :l td 90  
  menger :l :p  av 2*:l menger :l :p re 2*:l  
  tg 90 av :l td 90  
  repete 3 [menger :l :p av :l] re 3*:l  
  pique 90 re :l cabre 90  
  menger :l :p  av 2*:l menger :l :p re 2*:l  
   pique 90 re :l cabre 90  
]  
fin  
 
pour eponge :p  
ve ct donne "compteur 0 perspective fcfg 0 menger 800 :p  
tape [Nombre de polygone: ] ec :compteur  
vue3d  
fin

Ce programme comprend quatre procédures :