En 1904, le mathématicien Helge von Koch (1870-1924 - Suède) publie l'article : "Sur une courbe continue sans tangente, obtenue par une construction géométrique élémentaire" qui décrit la suite de polygones infinie actuellement connue sous le nom de "flocon de von Koch".
Le flocon de von Koch se construit de manière récursive : on part d'un triangle équilatéral F1 de côté de longueur l. Pour tout entier n, pour passer d'un flocon Fn au flocon suivant, on partage chaque segment de Fn en trois segments égaux et on remplace le segment central par deux nouveaux segments, en formant un triangle équilatéral tourné vers l'extérieur :
Le flocon de von Koch est l'objet fractal obtenu en recommençant le procédé à l'infini.
Vous pouvez observer une animation des premières itérations du flocon de von Koch.
La construction du flocon de von Koch repose donc sur le principe de base ci-dessous :
Si on note L la longueur du triangle équilatéral initial, à chaque étape, la longueur de la figure est donc multipliée par 4/3. Cette suite diverge donc vers +∞, la longueur de la figure est infinie. On arrive alors à ce qui a longtemps été considéré comme une "horreur mathématique" : une courbe de longueur infinie mais d'aire finie, puisqu'elle est contenue dans un domaine fini du plan (on peut même prouver assez facilement que son aire est égale à 8/5 de l'aire du triangle initial).
On utilisera la structure suivante, qui devrait éviter des plantages à répétition avec Pyzo :
import turtle #debut du programme principal turtle.speed(0) # ... # fin du programme principal turtle.done()
Vous connaissez sans doute déjà certaines de ces fonctions, appelez-les pour vous rafraîchir la mémoire (et découvrir les autres) :
turtle.forward(100) # avance de 100 pixels turtle.backward(100) # recule de 100 pixels turtle.left(90) # tourne vers la gauche de 90° turtle.right(90) # tourne vers la droite de 90° turtle.penup() # lève le stylo (les déplacements ne dessinent plus rien) turtle.pendown() # repose le stylo (les déplacements dessinent à nouveau)
On commence par chercher à construire une seule ligne du flocon (ligne de von Koch) de profondeur n.
koch(l, n) qui prend en paramètres l la longueur initiale du segment et n la profondeur, et qui trace une ligne de von Koch.l / 3.Écrire la fonction flocon(l, n) qui utilise koch() pour tracer le flocon de von Koch complet (3 lignes de von Koch formant un triangle).
koch().turtle.tracer(0) avant l'appel à flocon() et turtle.update() juste après.koch() normale), sinon seul le premier niveau sera inversé.