A.3.4 Kochkurve |
|
Selbstähnlichkeit
Fraktale |
Schon beim Sierpinski-Dreieck ist uns eine Figur begegnet, die zu sich selbst ähnlich ist. Wenn man davon absieht, dass beim Implementieren und dann beim Zeichnen es eine Grenze der Darstellung geben muss, im ersten Fall würde es ohne den Rekursionsausstieg einen endlosen Rekursionsaufruf geben, und im zweiten Fall kommt man die Grenzen der grafischen Darstellung, kann man einen Teil der Figur herausgreifen und man erhält in diesem Teil wieder das Ganze. Selbstähnliche Figuren nennt man auch Fraktale1). |
|
|
Stellt man sich ein idealisiertes
Sierpinski-Dreieck vor, d.h. es gibt eine beliebige Zeichengenauigkeit und
die Rekursionstiefe sei unendlich, dann kann man das grün umrandete
Dreieck auf die Größe des rot umrandeten zoomen und es ist vom rot
umrandeten nicht zu unterscheiden. Es gibt auch Kurven (auch
Streckenzüge), die über die gleiche Eigenschaft verfügen. Sie haben,
wieder in idealisierter Darstellung, eine besondere Eigenschaft: Sie sind
innerhalb eines begrenzten Flächenbereichs eine unendliche Länge. Eine
Vertreterin solcher Kurven wollen wir kennen lernen. Es ist die Kochkurve.
|
|
Koch-Kurve | Wir geben eine Strecke vor. |
|
|
Wir dritteln die Strecke und setzten
ein Dreieck nach der folgenden Vorschrift darauf: Gehe um die neue Strecke
nach vorne (F = forward), drehe um a
= 60 gegen den Urzeigersinn (+), gehe wieder um vorwärts, drehe zweimal um
a
mit dem Uhrzeigersinn (- -), gehe
vorwärts, drehe um a
gegen den Uhrzeigersinn und gehe ein letztes Mal vorwärts. Wir können mit
der F,+, - Notation also kurz schreiben: L := F + F - - F + F Das L-System in Java: Wir erhalten dann die nachstehende Figur:
|
|
|
|
nächste Stufe |
Auf jeder Strecke machen wir nach
einer weiteren Drittelung der Strecke das gleiche wieder. Das heißt jedes
F ersetzen wir durch L mit einer Drittelung der Strecke: L + L -- L + L mit L = F + F - - F + F wir erhalten dann:
|
|
|
nöchste Stufen | wir ersetzen L erneut durch L und dritteln zuvor wieder die Strecke, u.s.w |
|
|
|
|
|
|
Auch die Kochkurve ist selbstähnlich,
wie die nachstehende Grafik veranschaulicht. |
|
![]() |
|
der rekursive Aufruf in Java |
|
Die rekursive Methode zeichne() in der Klasse KochKurve. java |
Die Kochkurve können wir zeichnen,
wenn wir die Folge L + L - - L + L in einer rekursiven Methode
unterbringen, wobei wir den Abbruch der Rekursion durch das tatsächliche
Vorwärtsschreiten geschieht, wenn die Schrittlänge einen bestimmten Wert
unterschritten hat.
|
Übung |
Schreiben Sie eine neue Kochkurve mit
dem L-System: L := F + F - F - F + F, mit a = 900 und der Bedingung, dass beim rekursiven Aufruf die Streckenlänge wieder gedrittelt wird. |
Lösung | |
Javadartellung des L-Systems |
|
|
|
Die rekusive Methode
in der Klasse RekursionsTurtle. java.
Downloads:
Kochkurve2.java
|
|
|
|
Das Nachstehende Bild zeigt die
Kochkurve, wenn die Rekursion bei einer Länge < 9 abgebrochen wird.
|
|
|
|
Schließlich die Kochkurve in ihrer
größten Genauoigkeit, wenn die Rekursion also bei einer Länge < 3
abgebrochen wird. (Wenn man bei einer Seitelänge von 729 startet, bedeutet
dies eine Genauigkeit von einem Pixel . |
|
|
|
Fußnoten | |
Das Wort Fraktale kommt aus dem
lateinischen und bedeutet gebrochen. Man erinnere sich, dass man in der
Medizin einen Knochenbruch auch häufig als eine Knochenfraktur bezeichnet.
Was ist aber in der Figur gebrochen? Es ist die Dimension. Das zu
begründen würde hier zu weit führen. Es sei hier z. B. auf das leider
nicht mehr lieferbare Buch
|
|
zu | A.3.5 Pythagorasbaum |
zur Startseite | www.pohlig.de (C) MPohlig 2007 |