Overblog Suivre ce blog
Editer l'article Administration Créer mon blog
11 juillet 2011 1 11 /07 /juillet /2011 12:00

Logo est un langage de programmation que j'ai découvert lorsque j'étais écolier, sur ordinateur MO5 en 1998. Il nous permettait de dessiner des carrés, rectangles, et peut-être d'autres figures. Pour cela, nous devions (les élèves) savoir faire avancer la tortue pour former la figure souhaitée. La tortue est commandée à partir d'insructions du type : avancer, tourner à gauche, tourner à 60° à droite, etc...
Récemment, en cherchant commant tracer un flocon de von Koch sur un logiciel, je suis tombé sur une version plus récente de Logo intégrée dans le langage Python.

Je rappelle qu'un flocon de von Koch d'une étape donnée s'obtient en collant trois courbes de von Koch de même étape : voir Courbe de Von Koch à la main. Ainsi les 6 extrémités des trois courbes de von Koch étant identiques se situent sur les sommets d'un triangles équilatéral.

Il s'agit de créer une fonction récursive   (qui s'appelle elle-même) courbevk, avec pour paramètre itérations, le nombre d'itération du flocon de von Koch, c'est à dire ce que j'ai appelé le N° de l'étape.  Ci-dessous, je donne l'algorithme et la version Python. La fonction permet de tracer une courbe à l'étape itérations.

 

Algorithme Version Python
Fonction courbevk :

Si itérations=0 alors avance de 10
                     sinon Début
                              courbevk(iterations-1) ;
                              tourner à 60° à gauche ;
                              courbevk(iteration-1) ;
                              tourner à 120° à droite ;
                              courbevk(iteration-1) ;
                              tourner à 60° à gauche ;
                              courbevk(iterations-1);
                              Fin                          
from turtle import *

def courbevk(iterations):
    if iterations == 0:
        forward(10)
    else:
        courbevk(iterations - 1)
        left(60)
        courbevk(iterations - 1)
        right(120)
        courbevk(iterations - 1)
        left(60)
        courbevk(iterations - 1)

 

Entre Début et Fin il y une suite d'instruction à exécuter dans l'ordre.

 

Remarque : la courbe de von Koch est formée de segments. Pour bien afficher la figure, les segments mesurent toujours la même taille, à toutes les étapes. La forme est la même mais la taille de la figure n'est pas respectée. Dans la vérification, il faudra donc ne pas tenir compte de la taille des segment, mais seulement de la forme générale de la figure.

 

Vérification :  Il faut faire une preuve par récurence sur le nombre d'itérations.

A l'étape 0, il s'agit de tracer un segment, c'est ce qui est fait puisque la tortue avance tout droit de 10 pas.

Supposons que la courbe à l'étape n soit bien programmée. Alors il faut vérifier que le programme fonctionne aussi à l'étape n+1. Pour passer de l'étape n à l'étape n+1, on transforme chaque segment en une courbe de 4 segments. Pour les obtenir il s'agit bien d'avancer (A->B), de tourner à 60° à gauche et d'avancer (B->C), de tourner à 120° à droite et d'avancer (C->D), de tourner à 60° et d'avancer (D->E).
etape_-.png

C'est que fait la fonction.

Ensuite pour réaliser le flocon, il faut recoller les courbes. Comme les extrémités à coller forment un triangle équilatéral (voir plus haut) voici les instructions pour un flocon d'étape 3.

Algorithme Version Python (à la suite)
i:=0 (i reçoit 0)
Tant que i<3 Début
                 courbvk(3);
                 tourner à droite à 120°;
                 i:=i+1 (augmenter la valeur de i de 1);
                  Fin
i=0

 

while i < 3:
    courbevk(3)
    right(120)
    i += 1


Je ne donne pas la vérification.

Ci-dessous quelques captures d'écran :

tortue_vk3_1.pngFlocon (itérations=2)
 tortue_vk5_2.pngFlocon (itérations=4) en cours de construction
 tortue_vk5_1.pngFlocon (itérations=4) en cours de construction  tortue_vk5_3.pngFlocon (itérations=4) fini

Partager cet article

Repost 0
Published by Maths_Buchwald - dans Fractales
commenter cet article

commentaires

Présentation

  • : Maths Otak'
  • Maths Otak'
  • : Au départ, j'ai créé ce blog pour y publier des articles reliant Maths et histoire de l'art et la culture. Maintenant, il me permet d'aborder des sujets simples de la culture mathématique. J'aime parler de jeux vidéos. Vous trouverez aussi sur ce site des fiches de maths et Histoire des Arts de 2009-2010 au format *.pdf. Je ne sais pas où me mène ce blog donc il ne sera sans doute plus le même si je continue à l'alimenter dans un an. N'hésitez pas à laisser des commentaires.
  • Contact

Twitter

Recherche

Mes vidéos

Catégories