Fraktale Geometrie - Kochkurven
Wir vertiefen die Rekursion am Beispiel der Kochkurven
Eine sehr bekannte selbstähnliche Figur ist die Kochkurve. Aus mehreren Kochkurven wird die Schneeflocken-Kurve zusammen gesetzt. Für unsere Versuche interessiert uns ihr Generator. Wir werden nun den Generator-Algorithmus als Programm formulieren. Er enthält eine wichtige, verallgemeinerbare Programmiertechnik, die Rekursion. Die Rekursion ist das geeignete Mittel, um die oben beschriebene Mehrfach-Fotokopier-Technik nachzubilden.
Das Ausgangsbild ist ein Rechteck. Dieses verkleinern wir auf ein Drittel seiner Anfangsgröße und stellen vier Kopien her. Diese fügen wir in der nächste Stufe wie abgebildet zusammen.
Stufe 0 | Stufe 1 |
Stufe 2 | Stufe 7 |
Kochkurven
Das Programm der Kochkurven
Wir zeigen dir nun das Programm, mit dem wir die Kochkurven erzeugt haben:
FUNKTION Kochkurve.zeigen (Stufe)
Grafikfenster.öffnen
Stift.anheben
Stift.positionieren (-200, -100)
Stift.rechtsdrehen (90)
Kopie (Stufe, 270)
ENDE FUNKTION Kochkurve.zeigen
FUNKTION Kopie(Stufe, Größe)
WENN Stufe = 0
DANN Initiator.zeigen (Größe)
SONST Generator (Stufe - 1, Größe / 3)
ENDE WENN
ENDE FUNKTION Kopie
FUNKTION Generator(Stufe, Größe)
Kopie (Stufe, Größe)
Stift.vorbewegen (Größe)
Stift.linksdrehen (60)
Kopie (Stufe, Größe)
Stift.vorbewegen (Größe)
Stift.rechtsdrehen (120)
Kopie (Stufe, Größe)
Stift.vorbewegen (Größe)
Stift.linksdrehen (60)
Kopie (Stufe, Größe)
Stift.zurückbewegen (2 * Größe)
ENDE FUNKTION Generator
FUNKTION Initiator.zeigen (Größe)
Stift.absenken
Rechteck.zeigen (Größe, Größe / 5)
Stift.anheben
ENDE FUNKTION Initiator.zeigen
FUNKTION Rechteck.zeigen (Länge, Breite)
WIEDERHOLE 2 MAL
Stift.vorbewegen (Länge)
Stift.linksdrehen (90)
Stift.vorbewegen (Breite)
Stift.linksdrehen (90)
ENDE WIEDERHOLE
ENDE FUNKTION Rechteck.zeigen
Aufgaben
Aufgabe 1 |
Implementiere das Programm zum Erzeugen der Kochkurve in deiner Programmierumgebung. |
Aufgabe 2 |
Ergänze dein Programm so, dass die folgenden aus Kochkurven zusammen gesetzten Bilder im Grafikfenster erzeugt werden: |
Verschiedene Kochkurven
In der mathematischen Literatur sind diese aus Kochkurven zusammen gesetzten Bilder unter dem Namen Schneeflockenkurven berühmt geworden.
Aufgabe 3 |
Erkläre am Beispiel des Funktionsaufrufes Kochkurve (2) mit eigenen Worten, wie die FUNKTION Kochkurve (Stufe) das Bild im Grafikfenster hervorbringt. |
Der Versuch, die Aufgabe 3 zu lösen, endet zumeist im heillosen Durcheinander. Dabei sollte das kurze Programm doch zu verstehen sein!
Du kannst die Funktion Kochkurve natürlich mit Hilfe des durchdringen. Wir geben dir jetzt eine weitere Hilfestellung und zeigen dabei ein universelles Verfahren auf, wie du die Arbeitsweise von rekursiven Funktionen Schwierigkeiten durchdringen kannst.
In den folgenden Bildern werden
- die zeitliche Reihenfolge der Funktionsraufrufe
- die Hierarchie der Aufrufe und
- die aktuellen Werte der Parameter deutlich.
Die Aufrufstruktur am Beispiel der Kochkurven
Um die Darstellung klarer zu gestalten, haben wir das Bild der Koch-Kurve um 900 gedreht. Die Komplexität des Aufrufes Kochkurve (0) hält sich noch in engen Grenzen.
Der Aufruf von Kochkurve (1) ist schon nicht mehr so einfach zu durchschauen:
Aufgabe 4 |
Ändere den Initiator des Programms Kochkurve so ab, dass Bilder wie die Folgenden im Grafikfenster erzeugt werden: |
Zusammenfassung
Du hast erlebt, dass wir den Initiator austauschen können, wenn wir das Prinzip der Allgemeingültigkeit nicht verletzen.
So erhalten wir weitere ästhetische Bilder.
Wesentlich für die Konstruktion neuer Initiatoren ist, dass der Zeichenstift beim Verlassen der Funktion sich in dem selben Zustand befindet wie beim Eintritt in die Funktion . Die Funktionen dürfen also keinen Seiteneffekt erzeugen.