next up previous contents
Nächste Seite: Wo liegt der Unterschied? Aufwärts: Fraktale Vorherige Seite: Die Klasse Turtle   Inhalt

Die Kochkurve

Ausgangspunkt der Kochkurve ist eine gerade Linie, die in drei gleiche Strecken geteilt wird. Über dem mittleren Teilstück wird ein gleichseitiges Dreieck errichtet:


\includegraphics[width=5.5cm]{FrKoch1.ps}


\includegraphics[width=5.5cm]{FrKoch2.ps}

Durch Rekursion erhält man die gleiche Figur längs jeder Verbindungsstrecke. Auf jedes gerade Teilstück der nun entstandenen Kurve lässt sich das Verfahren (rekursiv) wiederholen - es entsteht eine immer stärker ``gezackte'' Kurve:


\includegraphics[width=5.5cm]{FrKoch3.ps}


\includegraphics[width=5.5cm]{FrKoch5.ps}

Rufen wir das Teilen der geraden Linie in drei Teile und das Zeichnen der vier (!) neuen Strecken dreimal auf, so sprechen wir auch von der Rekursionstiefe 3. Diese Rekursionstiefe wird im Beispiel als Kommandozeilenparameter übergeben. Damit der Prozess abbricht, muss bei jeder Rekursion überprüft werden, ob das Ende schon erreicht ist...

import java.awt.*;
import Turtle.*;

public class Koch extends Frame {

    static int maxzahl;

    public void paint (Graphics g) {
        Turtle t = new Turtle(this,0,120);
        kochkurve(t, 300, maxzahl);
    }

    public void kochkurve (Turtle t, double strecke, int ebene) {
        if (ebene > 0) {
            kochkurve (t, strecke/3, ebene - 1);
            t.rt(60);
            kochkurve(t, strecke/3, ebene -1);
            t.rt(-120);
            kochkurve(t, strecke/3, ebene -1);
            t.rt(60);
            kochkurve(t, strecke/3, ebene -1);
        } else t.fd(strecke);
    }
    
    public static void main (String [] args) {
        maxzahl = Integer.parseInt(args[0]);
        Koch kprog = new Koch();
        kprog.setTitle("Kochkurve: " + maxzahl + " Rekursion(en)");
        kprog.setLocation(100,100);
        kprog.setSize(300,130);
        kprog.show();
    }
}

Mit ähnlichen Algorithmen, die im Internet oder in der Literatur leicht nachgeschlagen werden können, lässt sich eine Reihe ``prominenter'' Linienfraktale erzeugen...


next up previous contents
Nächste Seite: Wo liegt der Unterschied? Aufwärts: Fraktale Vorherige Seite: Die Klasse Turtle   Inhalt
Alfred Nussbaumer 2003-02-10