← 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()