Kapitel 6
Funktionen
180
Erläuterung:
#1: Abbruch der Rekursion.
#2: Rekursiver Aufruf. Links wird ein kleinerer Binärbaum gezeichnet.
#3: Rekursiver Aufruf. Rechts wird ein kleinerer Binärbaum gezeichnet.
#4: Die Turtle wird wieder an ihre Startposition manövriert.
#5: Hier beginnt das Hauptprogramm. Zunächst wird dafür gesorgt, dass die Turtle nach
oben zeigt.
#6: Am Ende eines Turtle-Grafik-Programms kann man mit hideTurtle() die Turtle ver-
stecken, um ein schöneres Bild zu erhalten.
6.9.4 Künstlicher Blumenkohl – selbstähnliche Bilder
Wenn Sie einen Bildausschnitt von der Oberfläche eines Blumenkohls sehen, können Sie
nicht erkennen, mit welcher Vergrößerung das Bild aufgenommen wurde. Denn die typi-
sche Struktur des Blumenkohls wiederholt sich immer wieder, wenn man das Bild vergrö-
ßert. Solche Bilder nennt man selbstähnlich. In der fraktalen Geometrie werden
selbstähnliche Bilder mathematisch beschrieben. Ein bekanntes Beispiel ist das Sierpinski-
Dreieck (Waclaw Sierpinski 1915). Die rekursive Konstruktionsidee ist:
Zeichne ein gleichseitiges Dreieck mit Seitenlänge x.
Zeichne in die drei Ecken kleinere Sierpinski-Dreiecke, jeweils mit der Seitenlänge x/2.
Abb. 6.10: Sierpinski-Dreieck und die rekursive Konstruktionsidee
forward(x)
left(45)
baum(x/2) #2
right(90)
baum(x/2) #3
left(45) #4
back(x)
return
left(90) #5
baum(100)
hideturtle() #6
181
6.9
Experimente zur Rekursion mit der Turtle-Grafik
Das folgende Skript zeichnet ein Sierpinski-Dreieck. Die Rekursion wird abgebrochen,
wenn eine Linienlänge von 5 unterschritten ist. Bei einem »echten« Sierpinski-Dreieck
muss die Rekursion eigentlich unendlich weiterlaufen.
Erläuterung:
#1: Zuerst wird ein großes Dreieck gezeichnet.
#2: Es gibt drei rekursive Aufrufe der Funktion sierpinski(). Jedes Mal wird ein kleineres
Sierpinski-Dreieck gezeichnet.
#3: Die Geschwindigkeit der Turtle können Sie mit speed() verändern. Am langsamsten
wird es mit
speed(1). Der Aufruf speed(0) bewirkt, dass die Zeichnung, so schnell es geht,
erscheint. Dann ist natürlich der lehrreiche Bewegungseffekt (weitgehend) aufgehoben.
from turtle import *
def sierpinski(x):
if x < 5: return
else:
fd(x) #1
right(120)
fd(x)
right(120)
fd(x)
right(120)
sierpinski(x/2) #2
fd(x/2)
sierpinski(x/2) #2
back(x/2)
right(60)
fd(x/2)
left(60)
sierpinski(x/2) #2
right(60)
back(x/2)
left(60)
return
speed(0) #3
left(60)
sierpinski(200)
hideturtle()

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.