Springe zum Inhalt oder Footer
SerloDie freie Lernplattform

L-Systeme

Die Grammatik des Grashalms

Eine spezielle Variante von Grammatiken sind Lindenmayer-Systeme oder kurz L-Systeme. Während bei einer Standard-Grammatik immer nur eine Produktion zur Zeit angewendet wird, werden bei einem L-System immer alle Produktionen gleichzeitig angewendet. Der Biologe A. Lindenmayer hat die später nach ihm benannten L-Systeme ursprünglich entwickelt, um das Wachstum von Pflanzen zu modellieren. Folgerichtig werden L-Systeme heute in der Computergrafik verwendet, um virtuelle Pflanzen zu generieren.

Bild

Prinzip

  • Bei einer Standard-Grammatik wendest du eine Produktion immer nur an einer Stelle zur Zeit an. Wenn du bei einer Standard-Grammatik also die Produktion XaXa auf das Wort XYYX anwendest, ersetzt du ein Vorkommen von X durch aXa und erhältst zum Beispiel XYYXaX.

  • Bei einem L-System dagegen wendest du alle Produktionen gleichzeitig an allen Stellen an. Du ersetzt alle Vorkommen von X durch aXa und erhältst aXaYYaXa. Wenn es außerdem noch die Produktion YYb gibt, ersetzt du auch noch alle Vorkommen von Y durch Yb und erhältst aXaYbYbaXa. Dieses Wort wird als nächste Generation nach Durchführung dieser Ersetzungen bezeichnet.

Formale Definition

In der einfachsten Form besteht ein L-System aus

  • einem Alphabet A,

  • einer Abbildung P:AA

  • einem Startwort s

Ein solches L-System hat große Ähnlichkeit mit einer kontextfreien Grammatik. Ähnlich wie die Produktionen einer kontextfreien Grammatik besteht die Abbildung P aus Paaren (a,w), wobei a ein Zeichen des Alphabets A ist und w ein Wort aus A. Ein solches Paar wird als aw geschrieben, es stellt eine Ersetzungsregel dar.

Das Startwort s ist die nullte Generation. Indem du die Ersetzungsregeln auf das Startwort anwendest, erhältst du die erste Generation.

Turtle-Grafik

Um Grafiken zu erzeugen, verwendest du Grafik-Operationen als Alphabetzeichen des L-Systems. Die einfachsten Grafik-Operationen findest du in der Turtle-Grafik: Eine Schildkröte (turtle) krabbelt auf dem Papier herum und führt folgende Aktionen aus:

  • F oder G Vorwärtsschritt

  • + Wendung nach rechts

  • - Wendung nach links

Zusätzlich gibt es noch die Zeichen [ und ], mit denen du die momentane Position der Turtle speichern und später wieder abrufen kannst, entsprechend den Stack-Operationen push und pop.

Weitere zusätzliche Alphabetzeichen benutzt du, um den Ersetzungsvorgang geeignet zu steuern.

Beispiel: Hilbert-Kurve

Das folgende L-System erzeugt eine raumfüllende Kurve, die Hilbert-Kurve:

A={X,Y,F,+,}

P:X+YF–XFX-FY+

   Y–XF+YFY+FX–

s=X

Die erste Generation, indem du zunächst X durch +YF–XFX–FY+ ersetzt, entspricht einer U-förmigen Kurve. Die zweite Generation, indem du alle X durch +YF–XFX–FY+ und alle Y durch –XF+YFY+FX– ersetzt, entspricht einer U-förmigen Kurve mit U-förmigen Einbuchtungen.

Bild

Die weiteren Generationen verursachen weitere U-förmige Einbuchtungen. Hierdurch entstehen Kurven, die nach und nach die Ebene beliebig dicht ausfüllen.

Beispiel: Drachen-Kurve

Das folgende erstaunlich einfache L-System erzeugt eine erstaunlich komplexe fraktale (selbstähnliche) Kurve, die Drachen-Kurve.

A={F,G,+,}

P:FF+G

   GF–G

s=F

Beispiel: Grashalm

Einen Grashalm kannst du nicht in einem Zug zeichnen, ohne den Stift abzusetzen. Hier werden nun die Turtle-Operationen [ und ] gebraucht. Bei einer öffnenden eckigen Klammer wird die aktuelle Position und die aktuelle Richtung der Turtle auf einem Stack gespeichert und bei der zugehörigen schließenden eckigen Klammer wiederhergestellt. Die Operationen + und – entsprechen hier Rechts- und Linkswendungen um 25°.

A={X,F,+,,[,]}

P:XF+[[X]–X]–F[–FX]+X

    FFF

s=X


Dieses Werk steht unter der freien Lizenz
CC BY-SA 4.0Was bedeutet das?