# coding: utf-8 # # Chapitre 6 - TP 2 - Dessiner des fractales (page 128) # from turtle import forward, speed, left, right, pencolor, hideturtle, setheading, goto, penup, pendown, done # Rappels turtle: # # speed(0) donne la vitesse maximale à la tortue # hideturtle() évite de dessiner la tortue elle-même pour se concentrer sur son parcours # forward(x) avance la tortue d'une distance x # pencolor((r,g,b)) change la couleur (des prochains traits de) la tortue, avec 0.0 <= r <= 1.0 # left(x), right(x) pivotent la tortue de x degrés à droite ou gauche # setheading(0), pas nécessaire, qui peut servir pour tester les fonctions, réoriente la tortue vers la droite. # goto(x,y), pas nécessaire, qui peut servir pour tester les fonctions, déplace la tortue jusque (x,y). total = 0 count = 0 def fragment_koch(n, longueur): global count speed(10) hideturtle() if n == 0: pencolor(count / total, 0., 0.) forward(longueur) count += 1 else: fragment_koch(n - 1, longueur / 3) left(60) fragment_koch(n - 1, longueur / 3) right(120) fragment_koch(n - 1, longueur / 3) left(60) fragment_koch(n - 1, longueur / 3) # Question 3 def koch(n): """ Dessine un flocon de koch. La taille de chaque côté du triangle de départ est fixée par longueur = 100. La profondeur de récursion est limitée à n. """ global total longueur = 300 total = 3 * (4**n) for i in range(3): # if i == 1: # pencolor("red") # else: pencolor("black") fragment_koch(n, longueur) right(120) # Test: # avant d'exécuter le code de la question 4 et 5 # on pourra s'assurer que la tortue commence par le segment du haut du triangle et # à la coordonnée que l'on choisit, avec : penup() goto(-150,150) pendown() setheading(0) koch(2) print(count) done() # 1. elle dessine au fur et a mesure du calcul