next up previous contents
Nächste Seite: Die Kochkurve Aufwärts: Fraktale Vorherige Seite: Fraktale   Inhalt

Die Klasse Turtle

In der folgenden Klasse Turtle werden die beiden Turtlegrafik-Methoden definiert:

import java.awt.*;

class Turtle {
    double x;
    double y;
    double alpha;
    Container c;
    Graphics g;

    Turtle(Container ct, double x, double y) {
        c = ct;
        g = c.getGraphics();
        g.setColor(Color.black);
        this.x = x;
        this.y = y;
        alpha = 0;
    }

    public void fd (double strecke) {
        double aa = alpha * Math.PI / 180;
        double dx = strecke * Math.cos(aa);
        double dy = strecke * Math.sin(aa);
        g.drawLine((int)x, (int) y, (int) (x+dx), (int) (y+dy));
        x+=dx;
        y+=dy;
    }

    public void rt(double winkel) {
        alpha = alpha - winkel;
    }
}

Die Instanzvariablen a und b legen die Startposition bzw. die aktuelle Position der Turtle. Die Klasse Container stellt ein Objekt zur Verfügung, das andere Objekte enthalten kann; hier ist das die Zeichenfläche g. In der Methode fd(strecke) wird zunächst der ``aktuelle'' Winkel der Turtle ins Bogenmaß umgerechnet. Aus der Strecke und dem Winkel wird mit Hilfe der Winkelfunktionen der Zuwachs für dx und dy berechnet und dann die Linie von (x,y) nach (x+dx,y+dy) gezeichnet. Die neue Position wird anschließend wieder in x und y gespeichert. In der Methode rt(winkel) wird der negative Drehwinkel einfach zum aktuellen Winkel addiert (das Vorzeichen des Drehwinkels ergibt sich aus der Orientierung der y-Achse ``von oben nach unten''). Damit die Klasse Turtle von anderen Java-Programmen verwendet werden kann, wird sie mit einem import - Befehl in den Programmcode eingebettet. Dies kann wegbleiben, wenn die Klasse Turtle im gleichen Verzeichnis wie das aufrufende Programm steht.


Die Klasse TurtleTest verwendet Turtle:

import java.awt.*;

public class TurtleTest extends Frame {

    public void paint(Graphics bs) {
        Turtle t = new Turtle(this,120,50);
        t.fd(50);
        t.rt(90);
        t.fd(20);
        t.rt(120);
        t.fd(70);
    }
           

    public static void main (String [] args) {
        TurtleTest tprog = new TurtleTest();
        tprog.setLocation(100,100);
        tprog.setTitle("Turtlegrafik");
        tprog.setSize(300,100);
        tprog.show();
    }
}

Die Klasse Turtle kann (natürlich) sowohl von Applikationen als auch von Applets verwendet werden.


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


next up previous contents
Nächste Seite: Die Kochkurve Aufwärts: Fraktale Vorherige Seite: Fraktale   Inhalt
Alfred Nussbaumer 2003-02-10