diff --git a/Chapitre 2 - Récursivité/C06_tp_fractales_koch.py b/Chapitre 2 - Récursivité/C06_tp_fractales_koch.py new file mode 100644 index 0000000..3e38b33 --- /dev/null +++ b/Chapitre 2 - Récursivité/C06_tp_fractales_koch.py @@ -0,0 +1,71 @@ +# 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): + global total + """ + 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. + """ + 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 +