13.1 En utilisant la récursivité

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

pict

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 :