Flocon de Koch

Courbe fractale créée suivant un principe de récursivité, en utilisant la librairie turtle

Koch_snowflake-turtle.py
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
 
# exemple de  courbe fractale (Koch)
# cf. http://fr.wikipedia.org/wiki/Flocon_de_von_Koch
# et http://en.wikipedia.org/wiki/Koch_snowflake 
# ce programme est basé sur un principe de récursivité
# (une fonction qui s'appelle elle-même)
 
from turtle import * # module turtle. Doc : http://docs.python.org/library/turtle.html
from time import sleep
 
def flocon(longueur, niveau):
    """Dessine une ligne à une étape finie tendant vers la création
    d'une ligne fractale (nombre infini d'étape) suivant le concept de Koch,
    caractérisée par sa longueur et le niveau de récursivité. A chaque niveau,
    la fonction fait appel à elle-même 4 fois, à un niveau inférieur, et le
    segment est droit lorsqu'on est au niveau 0.
    """
    if niveau == 0:
        forward(longueur)
        return
    longueur /= 3.0
    flocon(longueur, niveau-1)
    left(60)
    flocon(longueur, niveau-1)
    right(120)
    flocon(longueur, niveau-1)
    left(60)
    flocon(longueur, niveau-1)
 
 
print(flocon.__doc__)
speed(0)
long = 500.0  # la longueur du segment
niveaumin,niveaumax=2,6  # niveau min et max si on superpose plusieurs étapes tendant vers la fractale de Koch
penup()
goto(-250,200)
pendown()
for j in range(niveaumin,niveaumax+1):
    for i in range(3): # les 3 côtés d'un triangle équilatéral
        flocon(long, j)
        right(120)
 
sleep(4)  #pause

Références