labomath Courbe de Koch et Minilogo


Analyse du problème

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]

Test du programme

Vous pouvez modifier la valeur de niv dans première ligne.

Exercice

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 :

fract01

Avec la feuille de travail Minilogo, écrire le programme correspondant.

Une solution est disponible ici.


Retour...