next up previous contents
Nächste Seite: Das Menger-Fraktal Aufwärts: Fraktale Vorherige Seite: Ein Fraktal aus normalen   Inhalt

Das Sierpinsky-Dreieck

Das berühmte Sierpinsky-Dreieck wird ohne die in den vorangegangenen Beispielen verwendete Klasse Turtle realisiert. Die Rekursion kommt dabei so zu Stande, dass die Figur so lange verkleinert an einer neuen (``passenden'') Rekursion gezeichnet wird, bis die Basisgröße der Figur eine bestimmte Größe unterschreitet...

import java.awt.*;
import java.applet.*;

public class Sierpinsky extends Applet {
    
    public void paint (Graphics g) {
        sierpinsky(this,300,150,0);
    }

    public void sierpinsky(Container ct, double c, double x, double y) {
        Graphics g = ct.getGraphics();
        if (c>2) {
            sierpinsky(ct, c/2, x-c/4, y+c/4);
            sierpinsky(ct, c/2, x+c/4, y+c/4);
            sierpinsky(ct, c/2, x, y);
            g.drawLine((int) x, (int) y, (int) (x-c/2), (int) (y+c/2));
            g.drawLine((int) (x-c/2), (int) (y+c/2), (int) (x+c/2), (int) (y+c/2));
            g.drawLine((int) (x+c/2), (int) (y+c/2), (int) x, (int) y);
        }
    }
}

Beachte, wie die Seitenlänge der Dreiecke bei jedem Aufruf jeweils halbiert wird! Da die Graphics-Methode drawLine() nur geradzahlige Parameter akzeptiert, müssen die Werte zunächst nach Integer-Zahlen gecastet werden.


\includegraphics[width=4.5cm]{FrSierpinsky.ps}



Alfred Nussbaumer 2003-02-10