Dégradé
This commit is contained in:
parent
0dc0134920
commit
e4e3dcabf1
71
Chapitre 2 - Récursivité/C06_tp_fractales_koch.py
Normal file
71
Chapitre 2 - Récursivité/C06_tp_fractales_koch.py
Normal file
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue