Pour dessiner la courbe de Koch, on dessine, selon le niveau choisi, un certain nombre de segments de même longueur. Entre chaque segment, on tourne de 60° à gauche ou de 120° à droite. Nous avons donc à déterminer le nombre de segments à dessiner, leur longueur et la façon de tourner après chaque segment.
Cela nous mène à définir les variables suivantes :
On obtient le code suivant :
dans niv 4 dans cot 80 dans nb 4^niv dans pas cot/(3^niv) dans num 0
Pour centrer le dessin, nous ajoutons la ligne suivante qui déplace le point de départ:
lc re cot/2 bc
Il nous reste à déterminer la façon de tourner après chaque segment défini par son numéro.
Remarquons que pour les segments 1, 2 et 3 on tourne à gauche de 60°, à droite de 120° et de nouveau à gauche de 60°. Or ceci se répète pour les segments 5, 6 et 7, puis 9, 10 et 11, etc... C'est le reste de la division du numéro par 4 qui nous indique donc la façon de tourner. Pour les segments dont le numéro est un multiple de 4, on commencera par diviser le numéro par 4 tant que possible et on appliquera le même procédé.
Voici l'instruction qui dessine un segment et détermine l'orientation pour le segment suivant :
pour motif [ av pas dans num num+1 dans r num-4*ent(num/4) si r=1 (tg 60) si r=2 (td 120) si r=3 (tg 60) si r=0 [ dans q num tantque q/4=ent(q/4) (dans q q/4) dans r q-4*ent(q/4) si r=1 (tg 60) si r=2 (td 120) si r=3 (tg 60)] ]
Il ne reste qu'à répéter ceci autant de fois que nécessaire avec l'instruction :
faire nb [motif]
Vous pouvez modifier la valeur de niv dans première ligne.>
|
On peut s'inspirer de ce programme pour créer d'autres courbes fractales. Par exemple, on peut remplacer le segment initial par la forme suivante :
Avec la feuille de travail Minilogo, écrire le programme correspondant.
Une solution est disponible ici.