← RU Pythoncursus
Uitwerking: Inlever optie 2: Sierpinski
import turtle
from math import cos, pi
def driehoek(zijde):
turtle.pendown()
turtle.begin_fill()
for _ in range(0, 3):
turtle.forward(zijde)
turtle.left(120)
turtle.end_fill()
turtle.penup()
def sierpinski(n, zijde):
# Bepaal welke functie moet worden aangeroepen in deze stap van de recursie
if n == 0:
def tekenfunctie():
driehoek(zijde/2)
else:
def tekenfunctie():
sierpinski(n-1, zijde/2)
# We zorgen ervoor dat alles tekent vanuit de hoek links onder, dus begin met de tekening
tekenfunctie()
# Beweeg naar het startpunt van het volgende deelpatroon
turtle.forward(zijde/2)
tekenfunctie()
# Beweeg naar het startpunt van het volgende deelpatroon
turtle.left(120)
turtle.forward(zijde/2)
turtle.right(120)
tekenfunctie()
# Beweeg terug naar links onder
turtle.right(120)
turtle.forward(zijde/2)
turtle.left(120)
zijde = 400
n = 4
lijnkleur = 'blue'
vulkleur = 'blue'
turtle.color(lijnkleur, vulkleur)
turtle.penup()
turtle.speed(0)
# Centreer het figuur
turtle.setposition(-zijde/2, -zijde/2*cos(pi/3))
sierpinski(n, zijde)
turtle.done()