← RU Pythoncursus

Inlever optie 2: Sierpinski

De Sierpiński driehoek is een wiskundig figuur dat een voorbeeld is van een fractal. De driehoek is weergegeven in het plaatje hieronder. Het bijzondere aan de Sierpiński driehoek (en fractals in het algemeen) is dat een klein deel er hetzelfde uitziet als een kleine versie van het geheel. In het plaatje van de Sierpiński driehoek hieronder kan je bijvoorbeeld zien dat de driehoek bovenop de centrale witte driehoek er precies uitziet als het hele figuur maar dan drie keer zo klein.

image

In deze opgave gaan we een Sierpiński driehoek tekenen met behulp van recursie en turtle graphics.

  1. Schrijf een functie die vanaf de huidige positie van de turtle een gelijkzijdige driehoek tekent. Zorg dat de lengte van de zijde als argument meegegeven kan worden.

Ons uiteindelijke doel is een functie sierpinski(n, zijde) die de eerste n lagen van de Sierpiński driehoek met zijdes van de gegeven lengte tekent.

  1. Schrijf eerst een functie die de eerste iteratie van de Sierpiński driehoek tekent door 3 keer op de juiste plek een gelijkzijdige driehoek te tekenen.

image

Nu gaan we het idee van de fractal gebruiken, om een verdere stap te tekenen kunnen we eigenlijk dezelfde functie gebruiken, maar door nu een (eerdere stap van) de Sierpinski driehoek te tekenen in plaats van de gelijkzijdige driehoeken. De functie van opdracht 2 is dan het basisgeval.

  1. Schrijf nu de functie sierpinski(n, zijde): deze zal er hetzelfde uitzien als je functie van opdracht 2, maar nu in plaats van de functie die een driehoek tekent roep je de functie sierpinski(..., ...) wederom aan (recursie!) maar met andere waarden voor n en zijde, welke? Let ook op het basisgeval, voor n = 0 willen we gewoon een gelijkzijdige driehoek tekenen.

  2. Zorg er voor dat de voor- en achtergrond kleuren makkelijk aangepast kunnen worden. (Hint: bedenk eerst hoe je een achtergrond kleur maakt)