#!/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