next up previous contents
Nächste Seite: Schneeflocken-Fraktal Aufwärts: Fraktale Vorherige Seite: Variante der Kochkurve   Inhalt

Kochvieleck

In der paint()-Methode erfolgen in einer Schleife $n$ - viele Aufrufe der Kochkurve. Nach jedem Aufruf wird der Winkel um $\frac 360 n$ erhöht.

import java.awt.*;
import java.awt.event.*;

public class NKoch extends Frame {

    static int anzahl;
    static int laenge;
    static int ebenen;

    public void paint (Graphics g) {
        Turtle t = new Turtle(this,50,100);
        for (int i=0; i<anzahl; i++) {
            kochkurve(t, laenge, ebenen);
            t.rt(-360/anzahl);
        }       
    }

    static 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) {
        if (args.length < 3) {
            System.out.println("Aufruf: % java NKoch anzahl laenge ebenen");
            System.exit(0);
        }
        anzahl = Integer.parseInt(args[0]);
        laenge = Integer.parseInt(args[1]);
        ebenen = Integer.parseInt(args[2]);
        NKoch kprog = new NKoch();
        WindowListener wl = new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.out.println("... und aus ;-)");
                    System.exit(0);
                }
            };
        kprog.addWindowListener(wl);
        kprog.setTitle("Kochkurven: " + anzahl + " -eck");
        kprog.setLocation(100,100);
        kprog.setSize(300,300);
        kprog.show();
    }
}

Beachte die Überprüfung, ob tatsächlich 3 Parameter übergeben wurden!



Alfred Nussbaumer 2003-02-10