Gymnasium des Instituts Sacré Coeur Pressbaum
REKURSIVE STRUKTUREN
Fraktale Wachstumsmodelle von Pflanzen
Fachbereichsarbeit aus Mathematik
Michael Szell
unter der Betreuung von
Dr. Hildegard Urban-Woldron
Klasse: 8B
2000/2001
Rekursive Strukturen
Inhaltsverzeichnis
Inhaltsverzeichnis
Vorwort .................................................................................................. 4
1. Überblick über die fraktale Geometrie ................................................ 5
1.1. Wichtige strukturelle Merkmale .......................................................................................... 5
1.2. Erzeugung von Grenzobjekten ............................................................................................ 6
1.2.1. Zahlenverarbeitende Rückkopplungsmaschinen – Folgen und Reihen ................ 6
1.2.2. Bildverarbeitende Rückkopplungsmaschinen (MVKM) – Fraktale ..................... 8
2. L-Systeme ......................................................................................... 10
2.1. Historisches und Grundlagen ............................................................................................ 10
2.2. OL- und DOL- Systeme .................................................................................................... 11
2.3. Visualisierung durch Turtle-Grafik ................................................................................... 13
2.3.1. Grundkonzept / Erste Befehle ............................................................................. 13
2.3.2. Reskalierung am Beispiel der Cantor-Menge ..................................................... 14
2.3.3. Koch-Konstruktionen .......................................................................................... 15
2.3.4. Randersetzung am Beispiel von FASS-Kurven .................................................. 16
2.3.5. Knotenpunktersetzung am Beispiel der Hilbert-Kurve ....................................... 17
2.3.6. Dreidimensionale Objekte ................................................................................... 19
2.4. Verzweigte L-Systeme ...................................................................................................... 20
2.5. Stochastische L-Systeme ................................................................................................... 22
2.6. IL- und DIL-Systeme......................................................................................................... 23
2.7. Parametrische L-Systeme .................................................................................................. 25
2.7.1. Anabaena Catenula mit Heterozysten ................................................................. 27
2.7.2. Anwendung der neuen Turtle-Befehle ................................................................ 29
3. Modellierung von Bäumen ................................................................ 33
3.1. Monopodiale Verzweigung ............................................................................................... 34
3.2. Sympodiale Verzweigung.................................................................................................. 36
3.3. Tropismus und ternäre Verzweigung ................................................................................ 37
4. Phyllotaxis ........................................................................................ 39
4.1. Planar ................................................................................................................................. 39
4.2. Zylindrisch ......................................................................................................................... 41
4.2.1. Herleitung des L-Systems ................................................................................... 41
4.2.2. Analyse der Geometrie ........................................................................................ 42
5. IFS .................................................................................................... 46
6. Programme am TI-92........................................................................ 48
2
Rekursive Strukturen
Inhaltsverzeichnis
6.1. Cdiv (ad 2.2.) ..................................................................................................................... 48
6.2. Phyllo (ad 4.1.) .................................................................................................................. 50
6.3. Lsys .................................................................................................................................... 51
6.3.1. Aufbau ................................................................................................................. 51
6.3.2. Programmablauf .................................................................................................. 51
6.4. Ifs (ad 5.) ........................................................................................................................... 54
Literaturverzeichnis .............................................................................. 55
Abbildungsverzeichnis .......................................................................... 56
Schülerprotokoll ................................................................................... 57
Echtheitserklärung ............................................................................... 58
3
Rekursive Strukturen
Vorwort
Vorwort
Da ich mich schon seit Jahren für das Thema Chaos und Fraktale begeistere und
es heutzutage sogar im Lehrstoff eines Realgymnasiums praktisch nicht existent
ist, ist mir die Entscheidung, eine FBA trotz des intensiven Arbeitsaufwandes zu
schreiben, nicht schwer gefallen.
Weil auf diesem Gebiet in den letzten Jahren extrem viele (z.T.
populärwissenschaftliche) Werke erschienen sind und das Thema in den
unterschiedlichsten Bereichen der Wissenschaft Einzug gehalten hat, stellte sich
mir bei der Literaturbeschaffung kein Problem.
Ich hatte durch das breite Spektrum nur die Qual der Wahl, welches Thema ich
wählen sollte. Eine grundlegende Einführung widerstrebte mir, da es hier sicher
schon einige Fachbereichsarbeiten gab und fast alle Bücher, die ich auf dem
Gebiet kannte, mehr oder weniger die gleichen schon langweiligen Exkursionen
über Dimension, Selbstähnlichkeit, usw. boten.
So wollte ich mich auf etwas Bestimmtes spezialisieren. Erst konzentrierte ich
mich auf 3 bis 8-dimensionale Fraktale, doch das erschien mir zu theoretisch und
trocken, sodass ich schließlich bei den Pflanzen und deren mathematische
Beschreibung durch L-Systeme landete. Dass natürliche Objekte mit wenigen
Formeln relativ naturgetreu dargestellt werden konnten, hat mich sehr fasziniert
(vor allem die fotorealistischen Farbbilder aus [1] sprechen für sich).
Im ersten Semester der 7. Klasse begann ich mit dem Erstellen von Programmen
für diese FBA auf dem TI-92 in TI-92-Basic (auch in FARGO –der inoffiziellen „TI92-Assemblersprache“, die sich durch die Zugriffsmöglichkeit auf den
systeminternen Stack und die Schnelligkeit sehr gut für L-Systeme geeignet
hätte-; dies erwies sich aber als zu komplex und zeitaufwendig), die ich bis zum
8. Schuljahr perfektionierte.
Da ich mich in dieser Arbeit mehr mit mathematischen Algorithmen und
Hintergründen als mit programmtechnischen Beschreibungen auseinandersetzen
wollte, entschied ich mich für das Fach Mathematik und nicht Informatik (durch
die Naturmodelle lassen sich auch biologische Aspekte in dieser Arbeit finden).
Hiermit möchte ich aber weiters meine Abneigung gegen die oft völlig
unzeitgemäßen Methoden des heutigen Mathematikunterrichts ausdrücken, die
auch die Autoren von [2] (Heinz-Otto Peitgen, Hartmut Jürgens, Dietmar Saupe)
bedauern, und diese Arbeit dem langweiligen und konservativem Lehrstoff, der
wenig Platz für Kreativität und divergentes Denken lässt, entgegenstellen:
„Erkundendes Lernen, häufiges querfeldein Gehen, interdisziplinäres Denken,
dies waren seine [Anm: Niels Bohrs; dänischer Physiker] Maximen. Dagegen ist
das „moderne“ Mathematik-Curriculum doch so dürr und leblos und kommt mit
seiner Ästhetik daher wie eine schlechte Bauhauskopie. Mathematikunterricht
heute heißt fast immer vertikales Lernen, einen Stein systematisch auf den
anderen setzen. Damit dem Lernenden der Geschmack ein bißchen stimuliert
werde, sind dann und wann Textaufgaben eingestreut, die die Bedeutung der
Mathematik aus den Anwendungen belegen sollen: „Mutter ist dreimal so alt wie
Fritz und Fritz ist doppelt so alt wie Leni. Wie alt ist Fritz, wenn ...“ oder [...] Die
Textaufgaben mancher Schulbücher wirken hier eher als Verstärker der
Abschreckung vor Mathematik.“ (aus [2] Seite x f.)
4
Rekursive Strukturen
Überblick über die fraktale Geometrie - 1
1. Überblick über die fraktale Geometrie
Um das Konzept der L-Systeme erklären zu können, muss der Leser mit dem
Begriff Fraktal vertraut sein, da es sich hier ausschließlich um solche –nämlich
fraktale- Strukturen handelt.
Das Wort selbst wurde in den sechziger-Jahren vom französischen Mathematiker
Benoit B. Mandelbrot eingeführt (dem Leser ist vielleicht die „MandelbrotMenge“ oder das „Apfelmännchen“, das die erste vom Computer dargestellte
fraktale Grenzmenge ist, ein Begriff). Er leitete es vom lateinischen Verb
„frangere“ und vom zugehörigen Adjektiv „fractal“ ab. Das Verb bedeutet
brechen, Fragmente bilden. Beispiele aus der Natur sind z.B. Küstenlinien,
Wolken oder Organe wie die Lunge. Tatsächlich ist ein Großteil der Natur aus
Fraktalen aufgebaut. Sie stehen in enger Verbindung mit der sogenannten
Chaostheorie.
Dieser relativ moderne wissenschaftliche Zweig existiert erst seit Mandelbrots
ersten Versuchen mit dem Computer, da die Erzeugung eines Fraktals viele
Berechnungen und eine grafische Darstellung mit sich führt und erst seit der
Einführung des Computers in den 60er Jahren dieser als Medium dient und der
modernen Chaosforschung damals den Grundstein legte.
Durch die stetige Verbesserung der Rechenleistung gibt es heutzutage unzählige
Programme, die jedem Laien die Möglichkeit, auf dem eigenen PC Fraktale in
wenigen Sekunden darzustellen, bieten, ohne auch nur irgendetwas über die
dahinterstehenden Algorithmen zu wissen.
Fraktale sind zwar schon seit den bedeutenden Vorreitern wie Giuseppe Peano,
David Hilbert, Georg Cantor, usw. –also seit mehr als 100 Jahren- bekannt,
fanden aber zu dieser Zeit mangels Berechnung und Visualisierung keinen
Durchbruch.
1.1. Wichtige strukturelle Merkmale
Die wichtigsten Merkmale fraktaler Strukturen sind:
- Selbstähnlichkeit:
Mandelbrots Definition:
„When each piece of a shape is geometrically similar to the whole, both the
shape and the cascade that generate it are called self-similar.“ (aus [1] Seite v)
Kurz: Jedes Detail ist dem ganzen Objekt ähnlich. (siehe Abb. 1.1)
Abb. 1.1: Der Blumenkohl – ein statistisch selbstähnliches Objekt (siehe Kapitel 2.1)
5
Rekursive Strukturen
Überblick über die fraktale Geometrie - 1
- Skaleninvarianz:
Absolutwerte sind irrelevant; ein Fraktal kann theoretisch unendlich oft
vergrößert werden, ohne dass eine Veränderung der Form bemerkbar wird. (Da
Fraktale kompakte -also endlich ausgedehnte- Objekte sind, gibt es eine Grenze
bei Verkleinerungen.)
- eine gebrochene Dimension:
Da das Fraktal nicht einen Teil der Ebene bzw. des Raumes voll ausfüllt (bis auf
ein paar Ausnahmen wie z.B. die Peano- oder FASS-Kurven, die flächen-, bzw.
raumfüllend sind, siehe Kapitel 2.3.3.), spricht man von einer gebrochenen oder
fraktalen Dimension, die nicht ganzzahlig ist.
Es gibt verschiedenste Methoden, diese Dimension zu messen, diese sind aber
nicht Gegenstand dieser Arbeit und sollen daher nicht weiter erläutert werden.
(Eine kurze Erklärung zum Dimensionsbegriff findet sich in Kapitel 1.2.2.)
Eine für Laien aber auch Fortgeschrittene verständliche und umfassendere
Einführung in die Welt der Fraktale bieten die hervorragenden Bücher [2] und
[3].
1.2. Erzeugung von Grenzobjekten
Es gibt viele Möglichkeiten, ein Fraktal zu erzeugen; doch alle beinhalten das
gleiche Prinzip: Rückkopplung.
Solche Erzeugungssysteme sind auch immer iterativ und rekursiv (lat.
iterare=etwas wiederholen; recurrere=zurücklaufen); d.h. Fraktale entstehen
durch Wiederholung bzw. Ersetzung in unendlich vielen Durchläufen oder
Iterationen einer bestimmten Schleife mit vorgegeben Formeln.
Der Begriff der Rückkopplung ist vielen in Beziehung mit Tontechnik bekannt;
dort entsteht sie, wenn z.B. ein Mikrofon zu nahe an eine an das Mikrofon
angeschlossene Lautsprecheranlage gehalten wird. Ein beliebig leises Geräusch
wird vom Mikrofon aufgenommen und verstärkt aus der Anlage wiedergegeben.
Das verstärkte Signal wird wiederum verstärkt, bis es nach ein paar Durchläufen
die höchstmögliche Lautstärke (in einem unangenehmen Pfeifton) erreicht hat.
Ebenso ist das Filmen eines Bildschirmes, der auf sich selbst abgebildet wird, ein
rückgekoppelter Vorgang, der einen Bildschirm im Bildschirm im Bildschirm usw.
erzeugt.
1.2.1. Zahlenverarbeitende Rückkopplungsmaschinen – Folgen und Reihen
In diesem Unterkapitel definierte „Maschinen“ sind nichts anderes als eine Form
von Folgen und Reihen. Sie bilden das mathematische Gerüst für Fraktale.
Abb. 1.2: Schematische Darstellung der
Ein-Schritt-Rückkopplungsmaschine
6
Rekursive Strukturen
Überblick über die fraktale Geometrie - 1
Die Ein-Schritt-Rückkopplungsmaschine (siehe Abb. 1.2) wird durch eine
Iterationsformel xn+1 = f(xn) gekennzeichnet, wobei f(x) irgendeine Funktion von
x sein kann. Es wird eine Zahl als Eingabe (engl: Input) benötigt, die in jedem
Schritt durch die Funktion ersetzt wird und die Ausgabe (engl: Output) liefert.
Diese wird im nächsten Schleifendurchlauf als Input verwendet –was der
eigentliche Vorgang der Rückkopplung ist– und wieder ein Output daraus
berechnet.
Diese Folge kann divergieren (also als Endergebnis  oder - liefern), oder zu
einem Grenzwert konvergieren.
(Weiters besteht die Möglichkeit, dass die Funktion zu mehreren Grenzwerten
konvergiert und im Endzustand zwischen diesen hin- und herpendelt; die Anzahl
dieser Werte, die von bestimmten Bedingungen abhängig sind, verdoppeln sich
bei deren Veränderung –Bifurkation oder Periodenverdopplung genannt– und
sind bei chaotischen Systemen unendlich groß.)
Ein Beispiel für eine konvergente Folge ist die Methode der
Quadratwurzelberechnung, die als erste den Sumerern vor ca. 4000 Jahren
bekannt war und heutzutage in ähnlicher Form als Newton-Verfahren für die
Lösung von nichtlinearen Gleichungen bekannt ist:
Gegeben sei a>0. Man berechne die Folge x1,x2,x3,... so, dass der Grenzwert
a
ist, d.h. dass xn mit zunehmenden n gegen a strebt.
1
a
Diese rekursive Formel lautet: xn+1 = xn + 
2
xn
Betrachten wir z.B. die Wurzel von 2 (=1.4142135623..). Wir schätzen zunächst
eine grobe Näherung für 2 , z.B. x0=1. Dann wird
1
2
1
x1 = x0 +  =
1+
2
x0
2
2
= 1.5
1
und
1
2
1
2 
x2 = x1 +  =
1.5 +
= 1.41666..
2
x1
2
1.5 
usw.
Da in jedem Schritt die Anzahl korrekter Ziffern fast verdoppelt wird, nähern sich
die Zwischenergebnisse dem gesuchten Wert ziemlich rasch.
Es gibt natürlich auch Zwei- (und mehr) Schritt-Verfahren, bei denen nicht nur xn
sondern auch xn-1, xn-2 usw. in jeder Iteration berücksichtigt werden. Dabei
müssen auch entsprechend viele Anfangswerte gegeben sein.
Auch mehrere Variablen können verwendet werden.
Durch quadratische Funktionen und zusätzliche Konstanten lassen sich mit
kurzen Formeln leicht komplexe chaotische Systeme entwickeln. Typisch für
diese sind, dass keine expliziten Angaben möglich sind -d.h. bei gesuchtem x100
müssen alle x von x1-x100 durchgerechnet werden- , also keine „Abkürzung“
durchführbar ist.
7
Rekursive Strukturen
Überblick über die fraktale Geometrie - 1
1.2.2. Bildverarbeitende Rückkopplungsmaschinen (MVKM) – Fraktale
Fraktale können als Grenzobjekte „visualisierter Folgen“ aufgefasst werden.
Die einfachste Konstruktionsmethode bietet die sogenannte MehrfachVerkleinerungs-Kopier-Maschine (kurz MVKM), die in Kapitel 5 als IFS formaler
erklärt wird:
Man stelle sich ein Kopiergerät mit 3 Linsen vor. Jede dieser Linsen erfasst den
Anfangsinput (in der Fachsprache Axiom genannt, was soviel wie „Grundwert“
bedeutet) -hier irgendein Bild- und verkleinert ihn mit dem Faktor 1/2. Diese 3
kleinen Versionen werden gleichzeitig auf bestimmte verschiedene Bereiche eines
neuen, gleich großen Blattes gedruckt (siehe Abb. 1.3). Somit wird ein Bild
bestehend aus 3 kleinen Kopien des Ausgangsbildes erzeugt.
Abb. 1.4 (oben): Erzeugung des SierpinskiDreiecks
Abb. 1.3 (links): MVKM mit 3 Linsen
Die Rückkopplung besteht nun darin, dass das Gerät das Bild wieder einzieht und
es auf die gleiche Weise verarbeitet. Somit erhalten wir ein Bild mit 9 um 1/4
verkleinerte Kopien des ursprünglichen Bildes. Verfahren wir unendlich oft mit
dieser Methode, erhalten wir ein unendlich zerklüftetes Objekt mit unendlich
vielen Anfangsbildern auf ein Unendliches verkleinert (siehe Abb. 1.4). Dieses
spezielle heißt Sierpinski-Dreieck, benannt nach seinem Erfinder, dem
polnischen Mathematiker Waclaw Sierpinski. Es besitzt eine Dimension von ca.
1.5850. Mit dem Begriff „Dimension“ ist in diesem Fall die sogenannte
Selbstähnlichkeitsdimension gemeint; sie ist durch das Verhältnis des
Logarithmus der Anzahl der Kopien und des Logarithmus des Kehrwerts des
Verkleinerungsfaktors in einem Schritt definiert. Um beim Sierpinski-Dreieck zu
bleiben, beträgt der Logarithmus der Anzahl der Kopien log(3) und der
Logarithmus des Kehrwerts des Verkleinerungsfaktors log(2); also ergibt sich
log(3)
≈ 1.5850. Dies mag seltsam klingen, da das Sierpinksi-Dreieck grob
log(2)
gesagt nur Linienelemente, aber keine Flächen- oder Volumenelemente enthält.
Dieses topologische Problem ist nicht Teil der Definition der
Selbstähnlichkeitsdimension, aber der Überdeckungsdimension, die immer
ganzzahlig und beim Sierpinski-Dreieck 1 ist. Wie man sieht, muss man beim
Begriff der Dimension vorsichtig sein, da es viele Dimensionsbegriffe gibt, die auf
verschiedene Aspekte ausgerichtet sind.
Es ist klar, dass man in der Realität nichts unendlich oft ausführen und somit
auch keine Fraktale erzeugen kann. Selbst wenn wir unendlich viel Zeit hätten,
würden wir bei der Auflösung auf Grenzen stoßen.
8
Rekursive Strukturen
Überblick über die fraktale Geometrie - 1
Abb. 1.5: Der Attraktor des Sierpinski-Dreiecks ist
unabhängig vom Startbild
Bemerkenswert ist ausserdem,
dass das so erzeugte Endbild –
Attraktor gennantüberhaupt nicht vom
ursprünglichen Bild abhängt
(siehe Abb. 1.5). Es ist so
„attraktiv“, dass es jeden
Punkt zu sich zieht (lat:
atrahere = herziehen) und
schließlich nur noch es selbst
sichtbar ist. Wenn also der
Attraktor als Axiom angenommen wird, durchlebt das Bild keinerlei Veränderung.
Gleiches galt auch für die Methode der Quadratwurzelberechnung, wo der
Grenzwert unabhängig vom Anfangswert x0 war (Solche unabhängigen
Konvergenzwerte werden auch „Fixpunkte“ genannt).
In diesem Sinne kann man die MVKM als bildverarbeitende
Rückkopplungsmaschine ansehen.
Da Fraktale Grenzobjekte sind, können sie in der Praxis nur beliebig angenähert,
aber nie genau ermittelt werden; genau wie die Grenzwerte bei Folgen und
Reihen.
9
Rekursive Strukturen
L-Systeme - 2
2. L-Systeme
2.1. Historisches und Grundlagen
Die Schönheit der Pflanzen fasziniert schon seit Jahrhunderten viele
Mathematiker. Auffallende geometrische Merkmale wie die Symmetrie bei
Blättern, die typische Verteilung von Sonnenblumenkernen in der Blüte und die
spiralenartige Anordnung von Schuppen auf Kieferzapfen oder der Ananas stehen
schon lange unter menschlichem Studium.
So sind Pflanzen, wie die meisten Naturphänomene wie z.B. Wolken oder Berge,
in das Reich der Fraktale einzuordnen.
Genauer gesagt sind Pflanzen sogenannte Multifraktale, d.h. dass sie auf
unterschiedlichen Größenebenen bestimmte verschiedene fraktale Dimensionen
besitzen. Durch die mathematisch nicht exakt definierbaren Formen von Pflanzen
können diese nicht als selbstähnlich angesehen werden; der Begriff statistische
Selbstähnlichkeit, der bestimmte statistische Abweichungen berücksichtigt, ist
für diese aber zutreffend.
Es liegt nahe, Pflanzen als mathematische Modelle aufzufassen und auch so zu
behandeln. Die MVKM-Methode (siehe Kapitel 1.2.2.) ist aber nicht besonders
geeignet um verzweigte Pflanzen mathematisch zu simulieren, da die einzelnen
Bilder Mängel aufweisen (siehe Abb. 2.1).
Abb. 2.1: Der Versuch, durch
die MVKM das Wachstum eines
Zweiges zu simlulieren,
scheitert an unnatürlichen
Zwischenräumen, die sowohl
bei einem kurzen (oben) wie
auch einem langen Stamm
(unten) entstehen
Doch was ist der Unterschied zwischen klassichen Fraktalen und Pflanzen?
Fraktale werden normalerweise als statische Objekte angesehen und wirken sehr
künstlich, oft steril und unnatürlich. Ihre Entstehungsgeschichte ist für die
Struktur eigentlich uninteressant; wichtig ist das Endprodukt bzw. der Attraktor.
Pflanzen hingegen benötigen eine wichtige Komponente, die lange bei der
Untersuchung der Form ausser Acht gelassen wurde: die Zeit (zur Entstehung).
Dass sie eine entscheidende Rolle für das Wachstum und somit auch für die
äußere Erscheinung spielt, wurde schon im späten 17. Jahrhundert erkannt und
von D’Arcy Thompson so kommentiert:
„Wir können die Form eines Organismus als Ereignis in Raum und Zeit
betrachten, und nicht einfach nur als eine räumliche Konfiguration.“ (aus [3]
Seite 506)
10
Rekursive Strukturen
L-Systeme - 2
Auf dieser Grundlage erschuf der an der Universität von Utrecht tätige
theoretische Biologe Aristid Lindenmayer (1925-1989) mit Hilfe der von N.
Chomsky begründeten Theorie der Grammatiken einen mathematischen
Formalismus, der heute als Lindenmayer-Systeme (kurz: L-Systeme) bekannt
ist, und veröffentlichte ihn in seinem grundlegenden Werk „Mathematical models
for cellular interaction in development“ im „Journal of Theoretical Biology 18“ im
Jahre 1986. Zunächst wurden L-Systeme für die reine Berechnung von primitiven
multizellulären Organismen verwendet, später gelang es Lindenmayer in
Zusammenarbeit mit dem polnischen Mathematiker Przemyslaw
Prusinkiewicz, die mathematischen Graph-Grammatiken mit Hilfe von TurtleGrafiken in Computeralgorithmen umzusetzen (siehe Kapitel 2.3.). Diese
Visualisierung ist sehr wichtig für den Vergleich mit realen Strukturen, um
Theorien mit Modellen bestätigen zu können.
Heutzutage ist man schon so weit, fotorealistische Bilder und Animationen
mittels L-Systemen zu erzeugen, die u.a. in der Unterhaltungsindustrie
eingesetzt werden.
Auch viele Naturwissenschaften in den verschiedensten Bereichen -allen voran
die Entwicklungsbiologie, deren Aufgabe die Untersuchung von
Wachstumsprozessen ist- können diesen Formalismus gut für Modelle und
Simulationen verwenden.
Der Grundgedanke von L-Systemen besteht in der Ersetzung von Einzelteilen
durch bestimmte vordefinierte Regeln; anders als bei der MKVM, wo nur kleine
Versionen des gesamten Inputs neu eingefügt werden; also das ganze Objekt
verkleinert, kopiert und neu angeordnet wird.
Typisch dafür ist, dass das darzustellende Objekt abstrakt durch eine Liste oder
Zeichenkette (engl. String) aus mehreren Symbolen, die verschiedene
Bedeutungen haben und grafisch unterschiedlich interpretiert werden können,
beschrieben wird.
Dadurch könnte man L-Systeme neben zahlen- und bildverarbeitenden in
symbolverarbeitende Rückkopplungsmaschinen einstufen (obwohl aus den
Symbolen normalerweise wiederum Bilder interpretiert werden).
Da die Komplexität eines Fraktals (und damit die Länge der Zeichenkette) bei
jeder Iteration oft exponentiell anwächst, dauert auch die Berechnung und
Darstellung auf höheren Stufen erheblich länger, was ein entscheidender Nachteil
gegenüber bildverarbeitenden Techniken ist, die ja bei jedem Schritt die gleiche
Zeit benötigen, da die Datenmenge des Inputs immer gleich bleibt.
2.2. OL- und DOL- Systeme
Lindenmayer hatte die Absicht, das Wachstum multizellulärer Organismen zu
beschreiben, in denen mehrere Zellteilungen gleichzeitig stattfinden können.
Dafür erfand er zuerst OL- bzw. DOL-Systeme:
OL-Systeme werden formal als ein Tripel G = (V,w,P) bezeichnet, wobei V das
Alphabet (=Menge aller möglichen Symbole) des Systems, w ein Axiom
(=Startwort) aus V, und P eine endliche Menge von Regeln ist. Eine Regel
11
Rekursive Strukturen
L-Systeme - 2
ordnet jedem Symbol eine bestimmte Zeichenfolge zu. Diese Zuordnung wird
immer mit einem Pfeil ausgedrückt: A  B bedeutet, dass A durch B ersetzt wird.
Gibt es für jedes Zeichen genau eine Regel P, dann bezeichnet man dieses OLSystem als deterministisch oder DOL-System. Existieren für bestimmte
Symbole keine Regeln, so gilt das Prinzip der Selbstersetzung (also z.B. A  A).
Ein Beispiel dafür ist die blaugrüne Algenart Anabaena Catenula. Das Wachstum
der Alge vollzieht sich in fadenförmigen Zellketten. Jede Zelle wird mit einem
Symbol beschrieben. Dabei gibt es in der vereinfachten Ausführung kleine Zellen,
die mit A, und große, die mit B bezeichnet werden. Weiters beschreibt ein Suffix l
oder r, ob es sich um linke oder rechte Tochterzellen handelt. Somit umfasst das
Alphabet A vier verschiedene Zeichen:
A = {Ar, Al, Br, Bl}
Das Axiom w wird als Al angenommen und es gelten folgende Ersetzungsregeln:
Al  AlBr
Ar  BlAr
Bl  AlBr
Br  BlAr
Somit lautet dieses DOL-System
G = ({Ar, Al, Br, Bl}, Al, {Al  AlBr, Ar  BlAr, Bl  AlBr, Br  BlAr}).
Gespeichert werden alle Strings in einer eindimensionalen Liste; wie in einer dem
natürlichen Vorbild nachempfundenen Kette. In jedem Schritt der Iteration wird
jedes Element der Liste der Reihe nach überprüft und durch P entschieden, wie
es ersetzt wird.
Die ersten 5 Zustände der Alge sehen wie folgt aus:
n
Zeichenkette
1
Al
2
AlBr
3
AlBrBlAr
4
AlBrBlArAlBrBlAr
5
AlBrBlArAlBrBlArAlBrBlArAlBrBlAr
Es ist ein Muster erkennbar, das sich wiederholt. Die Folge von Zellen AlBrBlAr ist
ein periodischer Zyklus. Der Grund dafür ist, dass die erste Folge, AlBr, die
gleiche Folge von Zellen produziert wie die zweite Hälfte BlAr.
Eine komplexeres Modell der Alge wird durch mein TI-92 Programm Cdiv in
Kapitel 6.1. veranschaulicht.
12
Rekursive Strukturen
L-Systeme - 2
2.3. Visualisierung durch Turtle-Grafik
Wie wir in den nächsten Kapiteln sehen werden, ist die Visualisierung von LSystemen ein sehr wichtiges Hilfsmittel, um Fraktale wachsen sehen zu können.
Die Berechnung und Darstellung können beim Programmieren zwei unabhängige
Schritte sein (siehe Kapitel 6.3.). Die wichtigste Darstellungstechnik ist die der
Turtle- (dt: Schildkröten-) Grafik, die von Seymour Papert eingeführt und von
Przemyslaw Prusinkiewicz an die Interpretation von Zeichenketten angepasst
wurde.
Sie ist für Kurven in der Ebene (und auch im Raum) sehr gut geeignet, da sich
die Konstruktion von primitiven Pflanzen und klassischen Fraktalen kompakt mit
wenigen Regeln beschreiben lässt.
2.3.1. Grundkonzept / Erste Befehle
Das Konzept dieser Technik beruht auf einer beweglichen Schildkröte mit einem
schmutzigen Schwanz, die auf einem Blatt Papier sitzt und eine bestimmte
Richtung anvisiert. Sobald sie in Bewegung gesetzt wird, kann sie eine Spur
hinterlassen. Sie hat nur die Möglichkeit sich geradlinig zu bewegen und kann
vom Benutzer folgende Befehle erhalten:
F
f
+
–
Bewege dich um eine bestimmte festgelegte Schrittweite l vorwärts und
zeichne eine Linie von der Anfangs- zur Endposition
Bewege dich nach vorne wie bei F, hebe aber den Schwanz (zeichne
keine Linie)
Drehe dich um einen festgelegten Winkel  gegen den Uhrzeigersinn
Drehe dich um den Winkel  im Uhrzeigersinn
Dies sind Grundbefehle, die für die meisten L-Systeme notwendig sind.
Die Befehle + und – werden immer als selbstersetzend vorausgesetzt und sind
dadurch die einzigen Zeichen bei deterministischen Systemen, die nicht definiert
sein müssen (siehe Kapitel 2.2.).
Da jedes weitere Unterkapitel in Kapitel 2 neue L-Systeme und somit neue
Befehle mit sich führt, werden die Befehle in folgenden ständig erweitert.
Der Zustand der Schildkröte lässt sich in jeder Lage als ein Tripel (x,y,)
definieren, wobei x und y die Position, und  die Ausrichtung bezeichnen. Ein
Winkel =0 bedeutet, dass die Schildkröte nach rechts ausgerichtet ist. Der
Anfangszustand ist –wenn nicht anders angegeben- immer (0,0,0).
Mit Hilfe der elementaren Trigonometrie lässt sich eine Zustandsänderung in
folgender Tabelle beschreiben, die zur Erstellung von Programmen sehr wichtig
ist (siehe Kapitel 6.3.2.):
F und f (x,y,)  (x+l∙cos ,y+l∙sin ,)
+
(x,y,)  (x,y,-)
(x,y,)  (x,y,+)
13
Rekursive Strukturen
L-Systeme - 2
Die Parameter l und  müssen immer
festgelegt werden, da das Ergebnis bei
unterschiedlichen Winkeln stark variieren
kann (siehe Abb. 2.2).
Abb. 2.2: Zwei Zeichenketten (oben
F+F+FFF, unten FF+FF+F+FFF+F+FF+F)
mit drei unterschiedlichen Winkeln (60°, 90°,
120°)
2.3.2. Reskalierung am Beispiel der Cantor-Menge
Diese Grundbefehle sind ausreichend, um die meisten klassischen Fraktale
darestellen zu können.
Betrachten wir als erstes Beispiel die Cantor-Menge (siehe Abb. 2.3):
Sie ist eine unendliche Menge von Punkten im Intervall [0;1]. In der klassischen
Konstruktion zeichnet man eine Linie und entfernt in jedem Schritt das mittlere
Drittel jeder Linie. In konkreten Werten ausgedrückt, wird im 1. Schritt das
offene Intervall ]1/3;2/3[ entfernt, wonach die zwei Intervalle [0;1/3] und
[2/3;1] mit Länge 1/3 übrig bleiben. Diese werden wieder gedrittelt und deren
Mittelsegmente ]1/9;2/9[ und ]7/9;8/9[ entfernt. Somit erhält man nach jedem
Schritt doppelt so viele Linien und nach unendlich vielen Schritten als „fertiges“
Fraktal eine Punktmenge (die Cantor-Menge wird durch diese Eigenschaft auch
Cantor-Staub genannt).
Abb. 2.3: Klassische Konstruktion der Cantor-Menge (von oben nach unten)
Nun wollen wir versuchen, ein L-System für die Erzeugung der Cantor-Menge zu
wählen. Um eine Strecke, deren mittlerer Teil im nächsten Schritt nicht mehr
gezeichnet wird, zu formalisieren, bietet sich die Regel F  FfF an. Unser erstes
L-System lautet also:
Cantor-Menge (1. Versuch)
w F
p F  FfF
14
Rekursive Strukturen
L-Systeme - 2
Abb. 2.4: Konstruktion der Cantor-Menge (1. Versuch)
Da keine Regeln für f
angegeben wurden, gilt die
Selbstersetzung; also f  f.
(Dies soll in weiteren LSystemen nicht mehr
erwähnt werden.)
Abb. 2.4 zeigt die grafische Darstellung. Bei einem Vergleich mit dem Original ist
aber offensichtlich ein Fehler unterlaufen. Der erste Schritt ist noch richtig, doch
ab dem zweiten zeigt sich, dass die entfernten Streifen nicht lang genug sind. Da
jeder dieser Streifen durch f symbolisiert wird, sind alle gleich lang, was sich
aber nicht mit der Grundkonstruktion deckt, wo das mittlere Intervall [1/3;2/3]
ja drei mal länger als ein Intervall im 2. Schritt ist. Das heißt, das f hätte durch
die Zeichen fff ersetzt werden müssen. Das fehlerfreie System lautet jetzt:
Cantor-Menge
w F
p1 F  FfF
p2
f  fff
Dieses Problem ist durch die Reskalierung entstanden, die bei der Konstruktion
eines L-Systems in jedem Schritt durchzuführen ist. Das bedeuet, dass alle
Längeneinheiten (hier F und f) in jedem Schritt mit einem Skalierungsfaktor Sf
multipliziert werden müssen, damit das Fraktal eine kompakte Größe erhält.
Im Fall der Cantor-Menge ist Sf gleich 1/3; deshalb müssen hier auch die
entfernten Segmente, die in jedem Schritt ihre absolute Länge beibehalten
sollen, durch 3 Zeichen ersetzt werden.
Dieser Faktor wird normalerweise nicht angegeben, da er nur für die grafische
Darstellung (z.B. in Programmen; siehe Kapitel 6.3.) notwendig ist und bei mehr
als 1-dimensionalen Gebilden fast immer sehr schwierig zu berechnen ist.
2.3.3. Koch-Konstruktionen
Auch die klassische Koch-Kurve -ein Fraktal in der
Ebene-, die vom schwedischen Mathematiker Helge
von Koch 1890 erdacht wurde, lässt sich sehr
einfach in einem L-System darstellen:
In der klassischen Konstruktion wird eine Strecke
(Initiator) durch die Zusammensetzung von vier
verkürzten Strecken (Generator) wie in Abb. 2.5
schrittweise ersetzt.
Abb. 2.5: Konstruktion der Koch-Kurve (von oben nach
unten): Initiator (F), Generator (F+F––F+F) und drei
weitere Schritte
15
Rekursive Strukturen
L-Systeme - 2
Die Zusammensetzung des Generators kann durch F+F––F+F beschrieben
werden, wenn man =60° wählt. Das L-System für die Koch-Kurve lautet
demnach:
w
p

Koch-Kurve
F
F  F+F––F+F
60°
Solche Systeme, in denen das Axiom für den Initiator, die Ersetzungsregel für
den Generator steht und das Erzeugungszeichen F einen einfachen Rand
darstellt, werden als Kodierungen für Koch-Konstruktionen bezeichnet.
Dabei ist  oft 90°. Beispiele für verschiedenste Koch-Kurven zeigt Abb. 2.6. Bei
unzusammenhängenden wie der letzten wird ausser F, + und – auch das Zeichen
f benötigt.
Abb. 2.6: 3 verschiedene Koch-Konstruktionen
2.3.4. Randersetzung am Beispiel von FASS-Kurven
Bei dieser Methode ersetzen die Produktionsregeln Figuren für Polygonränder.
Wie auch bei der Knotenpunktersetzung (siehe Kapitel 2.3.5.) basiert dies auf
Teilung eines Flächenstücks.
Die Randersetzung kann als Erweiterung der Koch-Konstruktionen aufgefasst
werden. Z.B. zeigt Abb. 2.7 die Drachen-Kurve.
Abb. 2.7: Die Drachenkurve im 10. Schritt
Die neuen Symbole Fl und Fr
repräsentieren Ränder, die durch eine
Vorwärtsbewegung der Schildkröte wie
bei F entstehen. Der Unterschied ist, dass
bei Fl und Fr die Produktionsregeln
Ränder durch verschiedene Linien
ersetzen, die im Feld links bzw. rechts
des Randes aufgebaut werden. Diese
Symbole werden unterschiedlich
behandelt.
16
Rekursive Strukturen
L-Systeme - 2
Drachen-Kurve
w Fl
p1
p2
Fl  Fl+Fr+
Fr  –Fl–Fr

90°
Was so kompliziert klingt, ist sehr leicht an sogenannten FASS-Kurven zu
veranschaulichen (z.B. Abb. 2.9). FASS ist die Abkürzung für space-filling, selfavoiding, simple, self-similar. Auf Deutsch: Diese Kurven sind raum- bzw.
flächenfüllend, selbstausweichend (d.h. überschneidungs- und berührungsfrei),
einfach und selbstähnlich. Wie durch Abb. 2.8 ersichtlich, wird Fl in (a) durch die
Kurve in (b) ersetzt. Gleiches gilt für (c) und (d). (Die Häckchen in den
Streckenmitten markieren die zu ersetzenden Felder.)
Abb. 2.8: Die Bedeutung der Symbole Fl und Fr bei der E-Kurve
Abb. 2.9: Die E-Kurve im 2. Schritt
Das Interessante daran ist, dass, egal wie die Teile Fl
und Fr angeordnet werden, es nie zu einer Berührung
bzw. Überschneidung kommen kann. Eine rekursive
Anwendung zeigt, dass alle 25 Teile wieder von der
Kurve abgedeckt werden, was schließlich zur
flächenfüllenden Eigenschaft führt.
Von dieser Kurve -auch E-Kurve oder quadratische
Gosper-Kurve genannt- wurde bewiesen, dass sie
die einfachste FASS-Kurve ist.
2.3.5. Knotenpunktersetzung am Beispiel der Hilbert-Kurve
Hier werden nicht Ränder, sondern Knotenpunkte durch Polygone ersetzt. Um
das zu bewerkstelligen, müssen die Turtlebefehle um weitere Symbole erweitert
werden, die willkürliche, nicht dargestellte Subfiguren repräsentieren. Wie Abb.
2.10 zeigt, besteht jede Subfigur A aus einer Menge von Subfiguren  aus
folgenden Bestandteilen:


2 Kontaktpunkte namens Eingangspunkt Pa und Ausgangspunkt Qa
2 Richtungsvektoren namens Eingansvektor pa und Ausgangsvektor qa
17
Rekursive Strukturen
L-Systeme - 2
Abb. 2.10: Darstellung einer Subfigur A
Bei der Interpretation eines Strings durch
die Schildkröte nimmt das Symbol A  
die dazugehörige Subfigur in ein Bild auf.
Dafür wird A verschoben und gedreht, um
den Einganspunkt PA und die Richtung pA
in die aktuelle Position und Richtung der
Schildkröte zu bringen. Nachdem A plaziert
wurde, wird der Schildkröte die
Ausgangsposition QA und die Orientierung von qA zugewiesen.
Ein einfaches Beispiel dafür ist die Konstruktion der flächenfüllenden HilbertKurve (David Hilbert, deutscher Mathematiker 1862-1943); siehe Abb. 2.12:
Es seien die Kontaktpunkte und Richtungen der Subfiguren Ln und Rn wie in Abb.
2.11, und die Figuren Ln+1 und Rn+1 durch folgende rekursive Formeln erfasst:
Ln+1 = +RnF–LnFLn–FRn+
Rn+1 = –LnF+RnFRn+FLn–
Abb. 2.11: Rekursive Konstruktion
der Hilbert-Kurve durch Knotenpunktersetzung (dicke Verbindungslinien
repräsentieren F)
Abb. 2.12: Hilbert-Kurve im 6. Schritt
(das vollendete Fraktal würde ein
Quadrat voll ausfüllen)
Es seien die Kurven L0 und R0 gegeben. Ein Weg, den String für Ln oder Rn für
n>0 auszuwerten, besteht in der rekursiven Generierung der Strings, d.h. n
sukkzessive zu verkleinern und substituieren. Z.B. würde die Berechnung von L2
so aussehen:
L2 = +R1 F–L1FL1–FR1+
= +(–L0F+R0FR0+FL0–)F–(+R0F–L0FL0–FR0+)F(+R0F–L0FL0–FR0+)–F
(–L0F+R0FR0+FL0–)+
So kann also die Erzeugung von L als ein String-ersetzender Mechanismus
angesehen werden, wo die Symbole auf der linken Seite der rekursiven Formeln
18
Rekursive Strukturen
L-Systeme - 2
durch die dazugehörigen Strings auf der rechten Seite ersetzt werden. Diese
Überschreibung läuft parallel mit F, + und –, die sich selbst ersetzen. Da alle
Indizes in jedem beliebigen String den selben Wert haben, können sie zur
Verallgemeinerung vernachlässigt werden, falls keine bestimmte Anzahl von
Schritten gegeben ist. Daraus folgt folgendes L-System:
Hilbert-Kurve
L
L  +RF–LFL–FR+
w
p1
p2

R  –LF+RFR+FL–
90°
2.3.6. Dreidimensionale Objekte
Um ein realistischeres Bild von Pflanzen bekommen zu können, ist es möglich, LSysteme auf 3 Dimensionen zu erweitern.
Der Schlüssel dazu ist, die Orientierung der Schildkröte durch 3 Vektoren H, L
und U darzustellen. Diese Vektoren besitzen Einheitslänge und sind rechtwinklig
zueinander (erfüllen also die Gleichung H x L = U). Drehungen der Schildkröte
werden durch die Gleichung
 H'  H
 L'  =  L
  
 U'  U

R


ausgedrückt, wobei R für eine 3 x 3 Rotationsmatrix steht.
Speziell für jeden Vektor gibt es eine Matrix für einen um  gedrehten Winkel:
 cos  sin  0

RU() = -sin  cos  0
 0
0
1




cos  0 -sin 

1
0
RL() =  0
 sin  0 cos 




0
0
1

RH() = 0 cos  -sin 
 0 sin  cos 




Die folgenden Symbole kontrollieren die Ausrichtung der Schildkröte im Raum:
+
Linksdrehung um den Winkel  unter Verwendung von RU()
–
Rechtsdrehung um den Winkel  unter Verwendung von RU(-)
Vorkippen um den Winkel  unter Verwendung von RL()
&
^
\
/
|
Zurückkippen um den Winkel  unter Verwendung von RL(-)
Linksrolle um den Winkel  unter Verwendung von RH()
Rechtsrolle um den Winkel  unter Verwendung von RH(-)
Umdrehen unter Verwendung von RU(180°)
19
Rekursive Strukturen
L-Systeme - 2
2.4. Verzweigte L-Systeme
Zur Darstellung von fadenförmigen Organismen haben diese Zeichen gereicht,
doch um Pflanzen, die normalerweise Verzweigungen enthalten, zu erzeugen,
müssen neue Turtle-Befehle eingeführt werden, um diese definieren zu können:
[
]
Beginne eine Verzweigung: Merke dir den momentanen Zustand (=
Position und Blickrichtung, optional andere Attribute wie Dicke und
Farbe)
Beende eine Verzweigung: Lade den gespeicherten Zustand und fahre
am Verzweigungspunkt mit der Konstruktion fort
Dabei gibt es theoretisch keine Begrenzung in der Anzahl der Verzweigungen und
Unterverzweigungen. Diese Art der L-Systeme nennt man auch geklammerte LSysteme.
Betrachten wir als Beispiel folgende Zeichenkette:
A[BAA]B[BBC[ABB]B]BA
Den Stamm ABBA erhält man durch Auslassen aller eingeklammerten Ausdrücke.
Diese beschreiben zwei Hauptäste (BAA und BBCB) und einen Nebenast (ABB)
auf dem zweiten Hauptast, der nach dem C beginnt.
Hier einige Beispiele für geklammerte L-Systeme, die durch Rand- und
Knotenpunktersetzung entstanden sind (Abb. 2.13):
Abb. 2.13: fünf geklammerte L-Systeme; zwei durch mein Programm Lsys (siehe Kapitel
6.3) erstellte (rechts) mit Knospen an den Enden und drei Pflanzen basierend auf
Knotenpunktersetzung (links), wobei hier die Subfigur durch X kodiert ist
In meinem Programm Lsys werden zum Großteil verzweigte L-Systeme
berechnet und dargestellt (siehe Kapitel 6.3.).
20
Rekursive Strukturen
L-Systeme - 2
Abb. 2.14: dreidimensionale Busch-ähnliche Pflanze auf Stufe 7
Das nächste System ist eine mit der Technik der Knotenpunktersetzung erstellte
dreidimensionale Busch-ähnliche Pflanze, die in Abb 2.14 dargestellt wird.
Busch-ähnliche Pflanze
w
p1
p2
A
A  [&FL!A]/////´[&FL!A]///////´[&FL!A]
p3
p4
S  FL

22,5°
F  S/////F
L  [´´´^^{–f+f+f–|–f+f+f}]
Wie man sieht, wurden folgende neue Befehle eingeführt:
!
´
{
}
Verkleinere den Durchmesser eines Segmentes
Erhöhe den Farbindex
Beginne mit der Zeichnung eines Polygons
Schließe das Polygon und fülle es mit der aktuellen Farbe
Der erste Schritt dieses L-Systems ist ziemlich einfach zu erklären:
Das Axiom A ist ein Knotenpunkt, der 3 Zweige entstehen lässt, deren
Normalebenen (=Ebenen normal zur Grundfläche) um 5∙22.5°=112.5°, 7∙22.5°
21
Rekursive Strukturen
L-Systeme - 2
=157.5° und 360°-112.5°-157.5°=90° voneinander gedreht sind. Der Winkel
zwischen Zweig und Grundfläche ist bei jedem 90°-22.5°=67.5° groß.
Ein Zweig hat (unter Vernachlässigung der neuen Befehle und Winkelangaben)
folgende strukturelle Entwicklung:
FL  SFL  FLSFL  SFLFLSFL  FLSFLSFLFLSFL  SFLFLSFLSFLSFLFLSFL
und bei Weglassen der Subfigur S (die ja nur virtuell ist)
FL  FL  FLFL  FLFLFL  FLFLFLFLFL  FLFLFLFLFLFLFL .
Man beachte, dass bei jedem S der Zweig um 5∙22.5°=112.5° gedreht wird.
Der Umweg über p2 dient also dazu, auf einem Zweig in regelmäßigen Abständen
Blätter in verschiedene Richtungen sprießen zu lassen.
Ein Blatt L ist ein 6-eckiges Polygon, das zu seinem Stengel um 2∙22.5°=45°
nach unten gekippt ist.
Die Dicke eines Zweiges wird durch ! mit größerer Entfernung zum Hauptzweig
immer geringer, was der Pflanze ein realistischeres Aussehen verleiht. Auch
durch die leichte Farbveränderung der Blätter und Äste wird ein gewisser Grad an
Sterilität abgebaut.
2.5. Stochastische L-Systeme
Bisher definierte L-Systeme lieferten immer dasselbe Produkt; ein Axiom wurde
durch schrittweise angewandte, vordefinierte Produktionsregeln immer zum
selben Endprodukt verändert. Nach den bisherigen Modellen kann eine große
Anhäufung von Pflanzen (z.B. eine Wiese) nur aus einer Kopie von tausenden
gleichen Pflanzen aufgebaut werden. Dies hat eine extrem künstliche und sterile
Wirkung, die jeglichem Realismus entbehrt.
Der entscheidende Faktor für Natürlichkeit ist der Zufall, der neben der Ordnung
ein ebenso wichtiger Bestandteil der Evolution ist.
So gibt es bei stochastischen L-Systemen eine Auswahl von Formeln für ein
Zeichen und dazugehörige Wahrscheinlichkeiten, die bestimmen, welche Regel
wie häufig angewendet wird.
Dies bewirkt, dass die Topologie und geometrische Struktur der Pflanze
verändert wird, das grundsätzliche Aussehen (wie auch Dimension und
Skaleninvarianz) aber erhalten bleibt.
Formal ist ein stochastisches OL-System ein Quadrupel G = {V,w,P,}, wobei für
V, w und P selbiges wie bei simplen OL-Systemen gilt (siehe Kapitel 2.2.). Die
Funktion : P  ]0;1], Wahrscheinlichkeitsverteilung genannt, weist der
Menge der Regeln eine Menge von Produktionswahrscheinlichkeiten zu. Dabei
muss für jedes Element aus V die Summe der jeweiligen Wahrscheinlichkeiten 1
betragen.
Hier ein einfaches Beispiel, das ich in Lsys implementiert habe, mit Screenshots
von verschiedenen Pflanzen bei Schritt 5:
22
Rekursive Strukturen
L-Systeme - 2
w
Stochastisches Gras
FF
p1
1/3
F  F[+F]F[–F]F
1/3
p2
F  F[+F]F
P3
F  F[–F]F

25.7°
1/3
Abb. 2.15: Vier Spezien eines stochastischen Grases, generiert durch Lsys
Wie man sieht, erscheinen diese Pflanzen wie unterschiedliche Spezien einer Art.
2.6. IL- und DIL-Systeme
Die in diesem Kapitel behandelten Systeme sind kontextsensitiv. Das bedeutet,
dass die Wahl der Produktionsregeln von benachbarten Zeichen abhängt. Dies ist
für die Simulation von Interaktionen zwischen Teilen einer Pflanze (z.B.
Weitergabe von Nährstoffen) dienlich.
Dabei gibt es 1L-Systeme, die ein Nachbarzeichen berücksichtigen. 2LSysteme berücksichtigen dagegen beide Nachbarzellen. Deren
Produktionsregeln sind von der Form L<A>R  B , wo B nur dann aus A gebildet
wird, wenn von A der vorangehende String L und der nachfolgende R ist. L und R
können auch aus mehreren Zeichen bestehen.
So sind z.B. (k,l)-Systeme ein Überbegriff für bestimmte OL-, 1L und 2LSysteme, deren linker Kontext genau aus k, der rechte genau aus l Symbolen
besteht.
Um aber Spezifikationen für IL-Systeme kurz zu halten, sollen die Kontextlängen
im Folgenden vernachlässigt werden.
Ausserdem wird angenommen, dass bei Vorhandensein einer kontextsensitiven
und kontextfreien Produktionsregel für ein Zeichen die kontextsensitive
angewendet wird. Sollten keine Regeln vorhanden sein, gilt wie bei OL-Systemen
die Selbstersetzung.
Hier ein Beispiel für ein 1L-System, das ein Signal weitergibt:
23
Rekursive Strukturen
L-Systeme - 2
w
p1
p2
Signalweitergabe
XFFFFFFFF
X<F  X
XF
Das zu weiterleitende Signal X wandert von links nach rechts, wie die ersten
Schritte zeigen:
XFFFFFFFF
FXFFFFFFF
FFXFFFFFF
FFFXFFFFF
FFFFXFFFF
...
Die Anwendung von kontextsensitiven Systemen auf geklammerte ist schwieriger
zu vollziehen, da durch Verzweigungen die direkte Nachbarschaft von Elementen
verlorengeht. Dadurch können Symbole auch weggelassen werden; z.B. kann die
Regel BC<S>G[H]M auf die Zeichenkette
ABC[DE][SG[HI[JK]L]MNO]
angewandt werden, weil [DE] und I[JK]L bei der Kontextsuche einfach
übersprungen werden können.
Durch den Formalismus von geklammerten L-Systemen ist es möglich,
akropetale (zur Spitze hinlaufende) und basipetale (zum Stamm hinlaufende)
Signalweiterleitung zu simulieren (Abb. 2.16):
Abb. 2.16: akropetale (oben) und basipetale (unten) Signalweitergabe (je von links nach
rechts)
24
Rekursive Strukturen
L-Systeme - 2
Akropetale Signalweitergabe
Ignoriere: +–
w Fb[+Fa]Fa[–Fa]Fa[+Fa]Fa
p1
Fb<Fa  Fb
Basipetale Signalweitergabe
Ignoriere: +–
w Fa[+Fa]Fa[–Fa]Fa[+Fa]Fb
p1
Fa>Fb  Fb
Die Bezeichnung „Ignoriere: +–“ bedeutet, dass die Zeichen + und – bei der
Kontextsuche ignoriert werden.
Man beachte in Abb. 2.16, dass das Signal bei basipetaler nur im Hauptstamm,
nicht aber in Nebenäste wie bei akropetaler Signalweiterleitung, weitergegeben
wird.
Hier noch einige von Hogeweg und Hesper untersuchte 2L-Systeme, die sich
durch die alternierenden Drehungen aufeinanderfolgender Verzweigungen von
herkömmlichen Systemen unterscheiden:
Abb. 2.17: Durch Hogeweg und Hesper untersuchte 2L-Systeme, die alle möglichen
Symbolkombinationen berücksichtigen (+ und – wechseln sich bei jedem Schritt ab)
2.7. Parametrische L-Systeme
Obwohl mit bisherigen Systemen eine Vielfalt von Objekten erzeugt werden
konnte, gibt es Probleme bei bestimmten Proportionen zwischen
Längeneinheiten:
Da die Schrittlängen Einheitslängen sind und somit nur ganzzahlige Vielfache
davon erzeugt werden können, ist z.B. die Darstellung eines gleichschenkeligen
25
Rekursive Strukturen
L-Systeme - 2
rechtwinkligen Dreiecks unmöglich, da das Verhältnis Kathete:Hypotenuse genau
1: 2 ist und der Wert 2 durch seine Irrationalität nicht durch addierte
Einheitslängen angegeben werden kann.
Gleiches gilt für Winkel, bei denen nur Vielfache des vorgegeben Einheitswerts
erzeugt werden können.
Es wäre prinzipiell möglich, neue Zeichen einzuführen, die bestimmte
verschiedene Größen erzeugen, doch würde dadurch die Überschaubarkeit und
Simplizität von L-Systemen verlorengehen.
Eine bessere Variante ist das Einführen von parametrischen Symbolen, die
von der Schildkröte analog zu nichtparametrischen interpretiert werden:
F(a)
Bewege dich einen Schritt der Länge a>0 vorwärts. Dabei wird die
Position (x,y,z) auf (x´,y´,z´) verändert, wobei x´= x+aHx, y´= y+aHy
und z´= z+aHz gilt. Zeichne eine Linie zwischen (x,y,z) und (x´,y´,z´)
f(a) Bewege dich wie bei F(a) um a vorwärts, zeichne aber keine Linie.
+(a) Drehe dich um U um einen Winkel mit a°. Ist a positiv, drehe dich nach
links, sonst nach rechts.
&(a) Drehe dich um L um einen Winkel mit a°. Ist a positiv, kippe nach unten,
sonst nach oben.
/(a) Drehe dich um H um einen Winkel mit a°. Ist a positiv, rolle nach rechts,
sonst nach links.
Es ist zu beachten, dass die Bedeutungen der arithmetischen Symbole +, -, ∙, /,
^, der Vergleichsoperatoren <, >, = und der logischen Operatoren !, &, | (nicht,
und, oder) und Klammern () vom Kontext abhängen, da sie tw. ebenfalls als
Turtlebefehle vorkommen.
Außerdem wird der Zustand der Schildkröte durch den ersten Parameter
kontrolliert, falls mehrere mit einem Symbol assoziiert werden könnten.
Formal werden Symbole ( V) mit zugeordneten Parametern ( ) als Module
bezeichnet. Das Axiom w muss ein nichtleerer parametrischer String sein.
Das System wird also als G = (V,Σ,w,P) definiert, wo Σ die Menge der Parameter
darstellt.
Tabellen für par. L-Systeme werden weitere Spalten enthalten, die 3
Komponenten der Regel auseinanderhalten sollen: Den Prädezessor (= das zu
verändernde Modul inkl. kontextsensitiver Bedingungen), die Kondition (= die
zu erfüllende Bedingung) und den Sukzessor (= in die zu verändernden
Module).
Z.B. werde ich eine Regel p1 mit Prädezessor A(t), Kondition t>5 und Sukzessor
B(t+1)CD(tΛ0.5,t-2) als
p1
A(t)
t>5  B(t+1)CD(t^0.5,t-2)
angeben.
26
Rekursive Strukturen
L-Systeme - 2
Man nennt eine Regel zu einem Modul in einem parametrischen String passend,
wenn folgendes gilt:


der Buchstabe im Modul ist derselbe wie im Prädezessor
die Anzahl der konkreten Parameter im Modul ist gleich der Anzahl der
formalen Parametern im Prädezessor
die Kondition ergibt „wahr“ und die Parameter können überschrieben werden

Eine passende Regel kann auf ein Modul angewandt werden, woraus ein String
von Modulen -durch den Sukzessor definiert- entsteht.
Z.B. ist obige Regel zum Modul A(9) passend, da der Buchstabe A im Modul
derselbe wie im Prädezessor ist, es einen konkreten Parameter in A(9) als auch
einen formalen in A(t) gibt und die Bedingung t>5 durch t=9 erfüllt wird. Das
Ergebnis dieser Anwendung ergibt B(10)CD(3,7).
w
p1
p2
p3
p4
Beispiel für ein par. L-System
B(2)A(4,4)
A(x,y) y≤3  A(x∙2,x+y)
A(x,y)
y>3

B(x)A(x/y,0)
B(x)
x<1

C
B(x)
x≥1

B(x-1)
Hier die ersten 6 Zustände für dieses System (zur besseren Übersichtlichkeit ist
jedes Modul in einer eigenen Spalte):
1
2
3
4
5
6
B(2)
B(1)
B(0)
C
C
C
A(4,4)
B(4) A(1,0)
B(3) A(2,1)
B(2) A(4,3)
B(1) A(8,7)
8
B(0) B(8) A(7 ,0)
2.7.1. Anabaena Catenula mit Heterozysten
Diese Art von L-System wurde von Lindenmayer u.a. deshalb vorgeschlagen, da
die Diffusion von chemischen Stoffen in bestimmten Teilen der Anabaena
Catenula so am einfachsten modelliert werden kann.
In diesem komplexesten Modell wird dies durch die Anwendung eines
parametrischen 2L-Systems berücksichtigt.
Das Bakterium besteht aus 2 Typen von Zellen: vegetative Zellen (vZ) und
Heterozysten (Hz). Die vZ Teilen sich und erzeugen 2 Tochterzellen (vgl. mit
Kapitel 2.2.). Manchmal verwandeln sich vZ aber in Hz. Ihre Verteilung formt
durch eine relativ konstante Anzahl von vZ zwischen aufeinanderfolgenden Hz
ein typisches Muster. Diese konstanten Abstände werden von der Alge durch
Stickstoffverbindungen geregelt, die von den Hz produziert und von Zelle zu
Zelle weitergegeben werden und schließlich in den vZ zerfallen. Wenn die
Konzentration der Verbindungen unter ein gewisses Niveau fällt, wird an dieser
Stelle eine Hz gebildet.
27
Rekursive Strukturen
L-Systeme - 2
Anabaena Catenula (par. 2L-System)
Ignoriere: f~H
Inkludiere: H
w –(90)F(0,0,CH)F(4,1,CH)F(0,0,CH)
p1 F(s,t,c)
t=1 & s≥6
 F(s/3∙2,2,c)f(1)F(s/3,1,c)
p2
p3
F(s,t,c)
t=2 & s≥6

F(s/3,2,c)f(1)F(s/3∙2,1,c)
F(h,i,k)<F(s,t,c)>F(o,p,r)
s>ST|c>CT

F(s+.1,t,c+.25∙(k+r-3∙c))
p4
p5
F(h,i,k)<F(s,t,c)>F(o,p,r)
!(s>ST|c>CT)

F(0,0,CH)~H(1)
H(s)
s<3

H(s∙1.1)
CH
CT
ST
900
0.4
3.9
„Inkludiere: H“ kennzeichnet die Form einer Hz (eine Scheibe), die in einer
Grafikbibliothek von vorgefertigten Formen enthalten ist. Das Zeichen ~
kennzeichnet in p4 den Zugriff auf diese Bibliothek.
Die vZ werden durch die Module F(s,t,c) beschrieben, wobei s für die Zelllänge, t
für den Zelltyp (0 für eine Hz, 1 und 2 für vZ) und c für die Konzentration der
Stickstoffverbindungen steht. Der Unterschied zwischen Typ 1- und Typ 2- Zellen
besteht in der Anordnung der langen und kurzen Tochterzellen (vgl. mit Ar und Al
in Kapitel 2.2.). Die Regeln p1 und p2 beschreiben die Zellteilung der vZ, während
p3 die Weitergabe und den Zerfall der Chemikalien kennzeichnet. Ihre
Konzentration ist abhängig von den Konzentrationen der Nachbarzellen (k und r)
und wird mit der Formel
c´= c+.25∙(k+r-3∙c)
berechnet (siehe p3).
In p4 erfolgt die Umwandlung in eine Hz, wenn die Kondition, dass der
Schwellwert ST=3.9 nicht überschritten wurde (also die Zelle jung genug ist) und
der Wert der Konzentration kleiner als CT=0.4 ist, erfüllt wird. Der Unterschied
zwischen CH und CT erscheint groß, doch fallen die hohen
Anfangskonzentrationen, nämlich CH=900, ziemlich rasch.
Die letzte Regel, p5, beschreibt das Wachstum der Hz.
Die Parameter CH, CT und ST wurden so gewählt, dass sie durch das L-System
das natürliche Vorbild am besten modellieren, obwohl diese Werte nicht direkt an
der Alge beobachtbar sind.
Abb. 2.18 zeigt ein paar Entwicklungsphasen, wobei weiße Zellen niedrige, rote
hohe Konzentrationen haben. Die Hz werden durch rote Scheiben visualisiert.
28
Rekursive Strukturen
L-Systeme - 2
Abb 2.18: Entwicklung der Anabaena Catenula mit Heterozysten (von oben nach unten)
2.7.2. Anwendung der neuen Turtle-Befehle
Das nächste Beispiel, welches ich Baumreihe nenne (formal als CesároDreieck bekannt), ist eine Koch-Konstruktion (siehe Kapitel 2.3.3.), die durch
ein parametrisches L-System dargestellt wird und eine Variante der klassischen
Kochkurve (Abb.? auf Seite ?) ist. Der Initiator ist die Hypotenuse AB eines
rechtwinkeligen Dreiecks ABC. Im Generator (Abb. 2.19) wird AB durch D zu AD
und AB gespalten, während CD die Höhe bildet.
Abb 2.19: Generator der Baumreihe
Die Längen von p (AD), q (DB) und h
(DC) sind aus der elementaren Geometrie
durch die Zusammenhänge
q=c-p
und
h= pq
gegeben. Die Ränder des Generators
bilden 4 Dreiecke ähnlich zu ABC, woraus
sich durch den Zusammenhang zwischen
Randersetzung und flächenteilenden
Kurven (siehe Kapitel 2.3.4.) schließen
lässt, dass die gesamte Dreiecksfläche von der Grenzkurve ausgefüllt wird.
Das zugehörige L-System lautet:
29
Rekursive Strukturen
L-Systeme - 2
w
p

c
p
q
h
„Inhomogene” Baumreihe
F(1)
F(x)  F(x∙p)+F(x∙h)––F(x∙h)+F(x∙q)
86°
1
0.3
c-p
(p∙q)^.5
Abb. 2.20: „Inhomogene” Baumreihe
Durch den Winkel =86° wird nicht die korrekte flächenfüllende Kurve erzeugt,
diese zeigt aber einen besseren Einblick in die Struktur, da der Weg F(x∙h) beim
Winkel 90° doppelt und deckungsgleich gezeichnet würde (Abb. 2.20).
Man sieht, dass eine inhomogene Kurve (daher auch der Name) entsteht, die die
Ebene an verschiedenen Bereichen dichter füllt. Dieser Effekt entsteht dadurch,
dass alle Kanten, egal ob kurz oder lang, durch den Generator in jedem Schritt
gleich ersetzt werden.
Eine Kurve, die eine „schönere“ Verteilung aufweist, wird durch folgendes LSystem (in Abb. 2.21 dargestellt) erzeugt:
„Homogene” Baumreihe
w
p1
p2
F(1,0)
F(x,t)
t=0  F(x∙p,2)+F(x∙h,1)––F(x∙h,1)+F(x∙q,0)
F(x,t)
t>0  F(x,t-1)

c
p
q
h
86°
1
0.3
c-p
(p∙q)^.5
30
Rekursive Strukturen
L-Systeme - 2
Abb. 2.21: „Homogene” Baumreihe
Durch die Kondition in p1 werden nur bestimmte F (nämlich solche mit t=0)
durch den besprochenen Generator weiterverarbeitet.
Das nächste Beispiel macht Gebrauch von der Knotenpunktersetzung (siehe
Kapitel 2.3.5.). Dabei wird ein Rechteck ABCD schrittweise in 2 neue, AEFD und
BCFE, eingeteilt (Abb. 2.22). Die Länge a und Breite b erfüllen die Proportion
a
b
=
.
b
0.5∙a
Daraus folgt b=
Abb. 2.22: Generator für die
Baumartige Struktur
a
.
2
Jeder der Rechtecke ist mit einem Punkt assoziiert, der darin liegt. Diese werden
nach folgendem L-System miteinander verbunden:
Baumartige Struktur
w
p
R

A(1)
A(s)  F(s)[+A(s/R)][–A(s/R)]
1.456
85°
Abb. 2.23: Baumartige Struktur
Diese Struktur ist
selbstausweichend. Die Länge jeder
gezeichneten Linie bleibt für immer
gleich (Abb. 2.24 oben).
Anders ist dies bei folgendem
System, dass zwar gleiche
Proportionen aufweist, die Zweige
aber in jeder Stufe anwachsen und
so Wachstum modelliert wird (Abb.
2.24 unten).
31
Rekursive Strukturen
L-Systeme - 2
w
p1
p2
R

Wachsende baumartige Struktur
A
A  F(1)[+A][–A]
F(s)  F(s∙R)
>1
85°
Abb. 2.24: Baumartige Struktur nicht wachsend (oben) und wachsend (unten)
32
Rekursive Strukturen
Modellierung von Bäumen - 3
3. Modellierung von Bäumen
Die lange Vorgeschichte zur Simulation von verzweigten Strukturen liegt vor
allem in zellulären Automaten, die zelluläres Wachstum modellieren und stetig
ausgebaut und auf 3 Dimensionen ausgeweitet wurden. Diese Technik beruht auf
Interaktion zwischen Zellen einer wachsenden Struktur, wie auch zwischen der
Struktur und der Umgebung. Da diese Interaktion die Komplexität der Modelle
deutlich erhöht, greift man heutzutage mehr auf simple zurück, obwohl diese
entscheidende Umweltfaktoren nicht berücksichtigen. Die erste Art von
Baummodellen wurde von Honda vorgeschlagen, die folgende vereinfachenden
Kriterien erfüllt:





Baumsegmente sind gerade und ihr Umfang bleibt unberücksichtigt
Ein Muttersegment erzeugt in einem Schritt 2 Tochtersegmente
Deren Längen werden um die konstanten Faktoren r1 und r2 im Verhältnis
zum Muttersegment gekürzt (Abb. 3.1 links)
Das Mutter- als auch die Tochtersegmente liegen in einer Verzweigungsebene,
während die Tochtersegmente in bestimmten Winkeln a1 und a2 vom
Muttersegment weggedreht sind.
Die Linie, die rechtwinklig zum Muttersegment ist und in der
Verzeigungsebene liegt, ist horizontal. Die Ausnahme bildet eine
Verzweigung, die von einem senkrechten Hauptstamm ausgeht. In diesem
Fall existiert zwischen den Ebenen der Verzweigungen, die auch den
Hauptstamm enthalten, ein Divergenzwinkel  (Abb. 3.1 rechts).
Abb. 3.1: Gerüste für Baummodelle nach Honda
Allein die Veränderung obiger
Parameter lieferte Honda eine
große Anzahl von
unterschiedlichen Strukturen
(siehe Kapitel 3.1. und 3.2.).
Seine Modelle wurden immer
weiter verbessert und von
Aono und Kunii neue
Erweiterungen, wie die
Berücksichtigung von Wind,
Phototropismus und Schwerkraft, eingeführt, die Zweige in bestimmte
Richtungen neigten (siehe Kaptiel 3.3.).
Auch im Aussehen der Äste, die anfangs nur als Linien mit bestimmter Dicke
definiert waren und so „Baumskellette“ formten, wurde eine neue Entwicklung
eingeschlagen, indem man gebogene und texturierte Zweige und Blätter
einführte (siehe Titelbild). Später entstanden auch stochastische Modelle, die
eher nur baumähnliche Strukturen waren, aber in Massen zusammengesetzt ein
realistisches Bild ergaben, obwohl man dabei auf biologische Details wenig
Rücksicht nahm (Abb. 3.2).
33
Rekursive Strukturen
Modellierung von Bäumen - 3
Abb. 3.2: Stochastischer Wald
Die Anwendung von L-Systemen auf Baummodelle wurde als erstes von Aono
und Kunii in Betracht gezogen. Sie fanden, dass die originale Definition von LSystemen ungeeignet für Bäume schien, ließen in ihrer Argumentation aber
parametrische L-Systeme ausser acht, die sehr wohl für primitive Bäume
geeignet sind.
3.1. Monopodiale Verzweigung
Z.B. sieht man in Abb. 3.3 die Simulation von Honda'schen Baummodellen durch
L-Systeme, wobei ein Verzweigungswinkel (a1) 0° hat. Das heißt, dass sie
monopodiale Strukturen mit genau definierten Hauptstämmen und
Nebenzweigen darstellen.
w
p1
Honda'sche monopodiale Baumstrukturen
A(1,10)
A(l,w)  !(w)F(l)[&(a0)B(l∙r2,w∙wr)]/(d)A(l∙r1,w∙wr)
p2
p3
B(l,w)  !(w)F(l)[–(a2)$C(l∙r2,w∙wr)]C(l∙r1,w∙wr)
C(l,w)  !(w)F(l)[+(a2)$B(l∙r2,w∙wr)]B(l∙r1,w∙wr)
r1
r2
Siehe Tabelle (Seite 35 oben)
a0
a2
Siehe Tabelle (Seite 35 oben)
d
wr
137.5
0.707
Siehe Tabelle (Seite 35 oben)
Siehe Tabelle (Seite 35 oben)
34
Rekursive Strukturen
Modellierung von Bäumen - 3
Figur (Abb. 3.3)
links oben
rechts oben
links unten
rechts unten
r1
0.9
0.9
0.9
0.9
r2
0.6
0.9
0.8
0.7
a0
45
45
45
30
a2
45
45
45
-30
Abb. 3.3: Vier Beispiele für monopodiale Baumstrukturen nach Honda
Regel p1 erzeugt auf der Spitze der Hauptachse in jeder Iteration ein Segment F
und einen Knotenpunkt B. Die Konstanten r1 und r2 sind Kontraktionsfaktoren
für Haupt- bzw. Nebenzweige, a0 und a2 sind die Verzweigungswinkel und
d=137.5° der Divergenzwinkel. Das Modul !(w) setzt die Liniendicke auf w, die in
jedem Tochtersegment um wr=0.707 verkürzt wird. Dieser Faktor entspricht
einem Postulat von Leonardo da Vinci, wonach gilt: die Summe der Dicke aller
Zweige eines Baumes bei jeder Höhe entspricht der Dicke des Mutterzweiges. Im
Fall von 2 Tochterzweigen mit Durchmesser w2 und einem Mutterzweig mit w1
ergibt sich die Gleichung w1² = 2w2², weiters der Verkürzungsfaktor wr, für den
w2
1
=
 0.707 gilt.
w1
2
Die Regeln p2 und p3 beschreiben das kontinuierliche Wachstum der Nebenäste.
Dabei werden abwechselnd Zweige nach links und rechts um die Winkel a2 bzw.
–a2 erzeugt. Damit Hondas letzte Bedingung, die eine Verzweigungebene am
nächsten zu einer Horizontalebene fordert, erfüllt wird, wird die Schildkröte
mittels $ um seine Achse gedreht, was den Vektor L in eine horizontale Lage
35
Rekursive Strukturen
Modellierung von Bäumen - 3
bringt. Technisch gesehen, verändert der Befehl $ die Lage der Schildkröte im
Raum den Formeln
L=
VxH
|V x H|
und
U=HxL
entsprechend, wobei V die der Gravitation entgegengesetzte Richtung ist.
3.2. Sympodiale Verzweigung
Eine leicht veränderte Verzweigungsform zeigt die sympodiale Verzweigung, wo
beide Tochtersegmente Winkel ungleich Null zum Muttersegment aufweisen.
Daraus ergibt sich eine scheinbar gebogene Stammform bei kleinen a1, wie Abb.
3.4 zeigt.
Abb. 3.4: Vier Sympodiale Baumstrukturen nach Aono und Kunii
w
p1
p2
r1
r2
Sympodiale Baumstrukturen nach Aono und Kunii
A(1,10)
A(l,w)  !(w)F(l)[&(a1)B(l∙r1,w∙wr)]/(180)[&(a2)B(l∙r2,w∙wr)]
B(l,w)  !(w)F(l)[+(a1)$B(l∙r1,w∙wr)][–(a2)$B(l∙r2,w∙wr)]
Siehe Tabelle (Seite 37 oben)
Siehe Tabelle (Seite 37 oben)
a0
a2
Siehe Tabelle (Seite 37 oben)
wr
0.707
Siehe Tabelle (Seite 37 oben)
36
Rekursive Strukturen
Modellierung von Bäumen - 3
Figur (Abb. 3.4)
links oben
rechts oben
links unten
rechts unten
r1
0.9
0.9
0.9
0.9
r2
0.7
0.7
0.8
0.8
a1
5
10
20
35
a2
65
60
50
35
Bei diesen Baummodellen beschränkt sich die Aktivität des Hauptsegments auf
die Bildung des Stammes und zweier Nebenäste, was in p2 beschrieben wird.
3.3. Tropismus und ternäre Verzweigung
Im folgenden Modell wird wirkliches Wachstum -wie in Kapitel 2.7.2 angerissenmodelliert. Dabei werden die bisherigen Stauchungs- zu Streckungsfaktoren (d.h.
die Faktoren erhalten Werte >1).
Abb.3.5: Tropismus
Außerdem wird hier der Einfluss einer Kraft durch
einen Tropismusvektor T berücksichtigt, der
alle Äste wie in Abb. 3.5 abbiegt und so den
Vektor H zu H´verändert. Soll der reine Einfluss
der Schwerkraft dargestellt werden, gilt
0
 
T=-1 .
0
Bei Phototropismus -also Wachstumseinfluss
durch Licht- oder anderen Tropismen verändert
sich dieser Vektor. Die Werte e und  ergeben
sich aus H und T.
w
p1
Ternär verzweigte Bäume
!(1)F(200)/(45)A
A(l,w)  !(vr)F(50)[&(a)F(50)A]/(d1)[&(a)F(50)A]/(d2)[&(a)F(50)A]
p2
p3
B(l,w)  !(w)F(l)[–(a2)$C(l∙r2,w∙wr)]C(l∙r1,w∙wr)
C(l,w)  !(w)F(l)[+(a2)$B(l∙r2,w∙wr)]B(l∙r1,w∙wr)
d1
d2
Siehe Tabelle (Seite 38 oben)
a
lr
Siehe Tabelle (Seite 38 oben)
Siehe Tabelle (Seite 38 oben)
vr
1.732
Siehe Tabelle (Seite 38 oben)
37
Rekursive Strukturen
Figur (Abb.3.6)
links oben
rechts oben
links unten
rechts unten
Modellierung von Bäumen - 3
d1
d2
a
lr
T
94.74 132.6 18.95 1.109
[0/-1/0]
137.5 137.5 18.95 1.109
[0/-1/0]
112.5 137.5 22.5 1.790
[-0.02/-1 /0]
180
252
36
1.070 [-0.61/0.77/-0.19]
e
n
0.22
0.14
0.27
0.40
6
8
8
6
Abb. 3.6: Beispiele für ternär verzweigte Bäume mit verschiedenen Tropismen
(Parameter aus obiger Tabelle)
Der Streckfaktor vr=1.732 lässt sich wiederum aus da Vincis Postulat (siehe
Kapitel 3.1.) ableiten:
w1² = 3w2²
w1
vr =
= 3  1.732
w2
Die Bildung von 3 neuen Ästen nennt sich ternäre Verzweigung.
Die stetigen Vergrößerungen der Längen und Durchmesser werden durch die
Regeln p2 bzw. p3 erfasst.
38
Rekursive Strukturen
Phyllotaxis - 4
4. Phyllotaxis
Die geordnete Anordnung von lateralen Organen (z.B. Blätter auf einem Stiel,
Schuppen auf zylindrischen Körpern, Samen in einem Blütenkopf) ist ein
wichtiger Bestandteil von Pflanzenformen, bekannt als Phyllotaxis (gr. Phyllo:
Blatt; gr. Taxis: Anordnung).
Immer wiederkehrende Werte bei den Verteilungen sind Zahlen aus der
Fibonacci-Reihe, die durch folgende rekursive Gleichung definiert ist:
Fn = Fn-1 + Fn-2
mit den Anfangszahlen 1 und 1.
Die ersten paar Zahlen der Reihe lauten also:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
Diese Reihe strebt gegen unendlich, während das Verhältnis
Fn+1
5+1
aufeinanderfolgender Elemente
gegen die Zahl  =
, auch bekannt als
Fn
2
der goldene Schnitt, strebt.
Der Fibonacci-Winkel 360°-² (ca. 137.5°) ist der Schlüssel für das planare
phyllotaktische Modell.
4.1. Planar
Um die Verteilung von Sonnenblumenkernen im Kopf der Pflanze zu berechnen,
führte Vogel die Formel
 = n∙137.5°,
r=c
n
ein, für die folgende Punkte gelten:



n ist die Laufvariable für die Kerne von innen nach aussen.
 ist der Winkel zwischen einer Ausgangsrichtung und dem Vektor des n-ten
Kerns in einem polaren Koordinatensystem beginnend in der Mitte der Blüte.
Daraus ergibt sich ein konstanter Divergenzwinkel von 137.5° zwischen
aufeinander berechneten Samen.
r ist der Abstand zwischen der Blüten- und der n-ten Samenmitte, der mit
einem gegebenen konstanten Skalierungsfaktor c multipliziert wird.
Die Abbildung lässt sich in einem L-System so beschreiben (Abb. 4.1):
Sonnenblumenkernverteilung
Inkludiere: D
w A(0)
p A(n)  +(a)[f(n^0.5)~D]A(n+1)
a 137.5°
39
Rekursive Strukturen
Phyllotaxis - 4
Der Zusammenhang r ~ n lässt sich dadurch erklären, dass die Anzahl aller
Samen (gleich groß und dicht angeordnet), die in einen Kreis mit dem Radius r
passen, proportional zu dessen Fläche sind. So ist die Ordnungszahl des
äußersten Kerns n proportional zu r², bzw. r ~ n .
Der Winkel 137.5° ist nicht so leicht zu
erklären. Vogel gibt zwei Bedingungen
für ihn an:


Jeder neue Kern wird durch den fixen
Winkel  in Bezug auf den vorherigen
Kern erzeugt.
Der Ortsvektor jedes neuen Kerns
passt in den größten Freiraum
zwischen die Ortsvektoren der
früheren Kerne.
Abb. 4.1: Mathematisches Modell der
Kernverteilung im Kopf der Sonnenblume
Abb. 4.2: Gerenderter
Sonnenblumenkopf mit Blättern
Wie man später erkannte, sind diese
Bedingungen unzureichend für die
Erklärung des Fibonacci-Winkels.
Der bekannteste Ansatz lautet, dass 2
Mengen von Spiralen existieren; die
eine aus in den Uhrzeigersinn
gedrehten, die andere aus gegen den
Uhrzeigersinn gedrehten Spiralen, die
aus den nächst gelegenen Samen
gebildet werden. Die Größen dieser
Mengen bestehen immer aus
aufeinanderfolgenden Zahlen der
Fibonacci-Reihe; so weisen die Blüten
der Margerite 21 in den Uhrzeigersinn
gedrehte und 34 gegen den
Uhrzeigersinn gedrehte Spiralen auf (Abb. 4.3). Bei der domestizierten
Sonnenblume (Abb. 4.2) betragen diese Werte 34 und 55. Sie hängen von der
Größe der Blüte ab.
Abb. 4.3: Die zwei Spiralenmengen
(21,34) bei der Margerite
40
Rekursive Strukturen
Phyllotaxis - 4
4.2. Zylindrisch
Spiralenartige Muster kommen in ausgedehnten zylinderförmigen Organen wie
der Ananas vor und können durch dieses Modell, welches die Anordnung von
Schuppen auf Zylindern darstellt, berechnet werden.
4.2.1. Herleitung des L-Systems
Diese Muster werden durch die Formeln
 = n∙,
r = konst,
H = h∙n
beschrieben, wobei folgende Punkte gelten:




n ist die Ordnungszahl einer Schuppe, vom Boden des Zylinders gezählt
, r und H sind die zylindrischen Koordinaten der n-ten Schuppe
 ist der Divergenzwinkel zwischen zwei aufeinanderfolgenden Schuppen (und
wie im planaren Modell als konstant angenommen)
h ist der vertikale Abstand zwischen zwei aufeinanderfolgenden Schuppen
(auf der Hauptachse des Zylinders gemessen)
Das parametrische L-System, dass diese Muster (Abb. 4.4) generiert, lautet:
Zylindrische Phyllotaxis
Inkludiere: D
w A
p A  [&(90)f(r)~D]f(h)/(a)A
a 137.5281°
h 35.3
r
500
Abb. 4.4: Modell der
zylindrischen Phyllotaxis
auf einem
zusammengerollten
(links) und einem
entrollten (rechts)
Zylinder
41
Rekursive Strukturen
Phyllotaxis - 4
Das Symbol A produziert Knotenpunkte f(h) auf der Hauptachse der modellierten
Struktur. Mit jeder dieser Knotenpunkte wird eine Scheibe ~D assoziiert, die im
Abstand r durch &(90) rechtwinklig zur Achse mittels f(r) plaziert wird. Durch das
Modul /(a) , das A um seine Achse dreht, entsteht die spiralenartige Anordnung
der Schuppen.
4.2.2. Analyse der Geometrie
Im planaren Modell lässt sich der konstante Divergenzwinkel =137.5° in vielen
Pflanzenarten finden. Dabei hängt die Anzahl der wahrgenommenen Spiralen von
der Größe der Blüte ab (siehe Kapitel 4.1.). Dagegen sind Muster auf dem
Zylinder auf dessen gesamter Länge einheitlich. Die Anzahl der Spiralen hängt
dabei nicht von der Größe, sondern lediglich von den Parametern  und h ab.
Das Problem ist nun,  und h als Funktion der Spiralen, die sich in und gegen
den Uhrzeigersinn drehen, auszudrücken. Die Lösung folgt dem von Erickson
(aus [1]):
Die phyllotaktischen Muster können durch auf die Oberfläche des Zylinders
gepackte Kreise gedeutet werden. Spiralenpaare bestehen aus einer Reihe von
berührenden Kreisen, deren Ordnungszahlen eine arithmetische Reihe mit der
Differenz m bilden. Diese Zahl heisst parastichy order (am besten mit
Spiralenordnung zu übersetzen) und wird im Englischen vor das Wort
"parastichy" gesetzt. Ich möchte den Namen "Spirale" verwenden (z.B. "3Spirale"), obwohl nicht die ganze Spirale, sondern nur ein Teil davon gemeint ist.
So könnten die Kreise auf der Zylinderoberfläche in zwei kongruente 2-Spiralen,
fünf kongruente 5-Spiralen, usw. eingeteilt werden. Die angulare Verschiebung
zwischen zwei aufeinanderfolgenden Kreisen in einer m-Spirale wird als m
gekennzeichnet. Diese Zahl kann Werte im Bereich ]-;] annehmen. Die
Beziehung zwischen m und dem Divergenzwinkel  wird durch die Gleichung
(I)
m = m - m2
ausgedrückt, wobei m ein ganzzahliger Wert ist, der enzyklische Zahl (engl:
encyclic number) genannt wird. Sie beschreibt die Anzahl der Windungen, die
die generative Helix zwischen zwei aufeinanderfolgenden m-Verläufen beschreibt,
auf eine ganze Zahl gerundet. Auch für die entgegengesetzt laufende Spirale
(rote bzw. grüne Kreise in Abb. 4.4) kann sich analog zu (I) eine Formel
aufstellen lassen:
(II)
n = n – n2
Angenommen, die m- und n- Spiralen beginnen beim Kreis 0, dann müssen sie
sich in ihren Wegen wieder beim Kreis mn schneiden. Dieser Schnittpunkt ist der
erste über dem Kreis 0. Daraus folgt, dass der Weg von Kreis 0 zu mn auf der mSpirale und zurück zu 0 auf der n-Spirale den Zylinder genau einmal umrundet.
Der Teil der m-Spirale vom Kreis 0 bis zu mn (inkl. der Endpunkte) besteht aus
n+1 Kreisen, weshalb die angulare Distanz zwischen den Kreisen 0 und mn
genau nm ist. Analog entspricht der Abstand zwischen den Kreisen 0 und mn auf
der n-Spirale gemessen mn, woraus die Gleichung
42
Rekursive Strukturen
(III)
Phyllotaxis - 4
nm – mn = 2
folgt. Die Vorzeichen ergeben sich aus den gegenseitig gerichteten Spiralen, wo
ein  positiv und das andere negativ ist. Ersetzt man bei (III) m und n durch die
rechten Seiten bei (I) bzw. (II), so folgt
(IV)
nm – mn = 1.
Zur besseren Analyse lässt sich ein Dreieck auf dem entrollten Zylinder durch die
Kreise mn und 0 (zweimal) aufspannen (Abb. 4.5).
Abb. 4.5: Das auf dem entrollten
Zylinder zwischen den Spiralen und
der Grundfläche aufgespannte
Dreieck
Die Höhe mit der Länge mnh teilt
das Dreieck in 2 rechtwinklige
Dreiecke. Wenn d den
Durchmesser der Kreise
repräsentiert, lassen sich mit
dem phytagoräischen Lehrsatz
folgende Gleichungen aufstellen:
und
(nm)² + (mnh)² = (nd)²
(mm)² + (mnh)² = (md)².
Nach h und d aufgelöst ergibt sich
(V)
h=
(VI)
d=
(m²–n²) / (n²–m²)
(n²m²–m²n²) / (n²–m²)
oder, unter Verwendung von Gleichung (III)
(VII)
d=
2(nm+mn) / (n²–m²) .
Das Problem besteht darin,
Werte für m und n zu
bestimmen, da sie nicht einfache
Funktionen von m bzw. n sind.
Bei gegebenen m und n kann
man sogar mehrere m und n
aus Bereichen mit Spiralen
verschiedener Steilheit
auswählen (Abb. 4.6).
Abb. 4.6: Verschiedene Verteilungen mit Spiralen verschiedener Steilheit
43
Rekursive Strukturen
Phyllotaxis - 4
Um diese Bereiche festzustellen, sollte man beobachten , dass sich die
phyllotaktischen Muster bei deren Grenzen verändern; eine zuvor dagewesene
verschwindet und eine neue entsteht. So koexistieren bei der Bereichsgrenze
sogar 3 Spiralen. Aus Abb. 4.6 folgt, dass an einem Ende des Bereiches die dritte
Spirale die Ordnung |m–n| und am anderen Ende (m+n) hat. Drei koexistierende
Spiralen implizieren, dass jeder Kreis 6 andere Kreise berührt. Dadurch liegen
alle Kreise in einem hexagonalen Gitter, was man in Abb. 4.5 links oben und
links unten sieht. Hier ist der Winkel + bei der Spitze mn (siehe Abb. 4.4)
gleich 2/3 bzw. 120°. Drückt man die Basis des Dreiecks durch die restlichen
Seitenkanten und deren Winkel aus, folgt
(2)² = (nd)² + (md)² – 2(nd)(md)cos(2/3)
und nach Vereinfachung
(VIII)
d = 2 /
m²+mn+n² .
Gleichungen (VII) und (VIII) ergeben
(IX)
nm + mn = 2 (n²–m²) / (m²+mn+n²).
Das Auflösen von m und n durch (III) und (IX) ergibt
(X)
(XI)
m = (m+2n) / (m²+mn+n²)
n = (2m+n) / (m²+mn+n²).
und
Sind die Werte für m und n gegeben, kann durch Gleichung (I) oder (II) der
Wert für  gefunden werden, falls die enzyklischen Zahlen m oder n bekannt
sind. Diese Nummern sind die kleinsten positiven Ganzzahlen, die Gleichung (IV)
erfüllen. Das Auffinden dieser kleinsten Werte erfolgt in der Praxis oft empirisch
oder durch einfache Computerprogramme.
Also kann ein phyllotaktisches Muster durch ein Zahlenpaar (m,n) so konstruiert
werden:
1. Finde m und n aus Gleichung (IV)
2. Finde den Bereich von zulässigen Werten für die angularen
Verschiebungen m und n. Die Grenzen können aus den Gleichungen
(X) und (XI) ermittelt werden, indem man die Werte m und n für die
eine und das Paar (min{m,n},|m–n|) für die andere Grenze verwendet.
3. Berechne für ein gewähltes Paar von m und n den Divergenzwinkel 
durch Gleichung (I) oder (II) und die vertikale Verschiebung h durch
(V).
4. Finde den Durchmesser d aus Gleichung (VI).
44
Rekursive Strukturen
Phyllotaxis - 4
Der Durchmesser d wird nicht direkt in Formeln für Bildsynthese verwendet, zeigt
aber die ungefähre Größe der verwendeten Körper. Folgende Tabelle zeigt
Parameterwerte, für die drei Spiralen koexistieren:
Bei einem gegebenen Muster mit zwei
Spiralen zeigt die Tabelle die Grenzen
für . Z.B. kann der Wert für  in
einem (5,8)-Muster 135.918365° bis
138.139542° betragen, was aus den
Werten bei (3,5,8) und (5,8,13)
hervorgeht.
Abb. 4.7 veranschaulicht den
Zusammenhang zwischen  und h für
verschiedene phyllotaktische Muster.
Dabei repräsentieren die Bögen
Strukturen mit zwei und
Verzweigungspunkte solche mit drei
Spiralen.
Abb. 4.7: Diagramm für  und h
45
Rekursive Strukturen
IFS - 5
5. IFS
Das von Michael Barnsley 1985 eingeführte Verfahren des Iterativen
Funktionen-Systems (engl: iterated function system), kurz IFS, erzeugte
großes Aufsehen, da noch nie zuvor komplexe pflanzliche Muster so einfach in 4
(oder mehr) affinen Abbildungen dargestellt werden konnten.
Affinitätstransformationen verwenden in verschiedenen Richtungen verschiedene
Verkleinerungsfaktoren; z.B. ist ein Quadrat einem Rechteck nicht ähnlich, da die
Proportionen nicht übereinstimmen, aber affin, da eine einseitige Streckung um
einen unterschiedlichen Faktor ein affines Rechteck erzeugt.
Obwohl das IFS keine Technik bietet, welche Entwicklung wie ein L-System
berücksichtigt, lassen sich ziemlich schnell und einfach natürliche Strukturen
erzeugen.
Eine affine Abbildung kann in der Form
 x'  =  a b   x  +  e 
 y'   c d   y   f 
dargestellt werden, wobei in der Regel gefordert wird, dass die Determinante der
2-reihigen Matrix nicht verschwindet.
Im bekanntesten Beispiel, dem Barnsley-Farn (Abb. 5.1 mitte), ergibt sich jedoch
auch eine Transformation mit verschwindender Determinante.
Die Darstellung der Parameter der 4 Transformationen erfolgt normalerweise in
einer Tabelle, die für den Barnsley-Farn so aussieht:
T
I
II
III
IV
a
0
0.197
-0.155
0.849
b
c
0
-0.026
0.283
0.037
0
0.226
0.26
-0.037
d
0.16
0.197
0.237
0.849
e
f
0
0
0
0
0
1.6
0.44
1.6
p (in %)
3
14
27
56
Abb. 5.1: 3 verschieden erzeugte Barnsley-Farne: links durch gleichverteilte
Wahrscheinlichkeiten (349525 Punkte), in der Mitte durch die Tabellenwerte und rechts
mit der Methode des Chaosspiels (je 198541 Punkte)
46
Rekursive Strukturen
IFS - 5
TI erzeugt den Stengel; eine Strecke, die aus der
Kontraktion des Einheitsquadrats zu einer Linie entsteht.
TII und TIV stellen Ähnlichkeitsabbildungen mit den
Streckfaktoren 0.3 bzw. 0.85 dar, wobei sich durch eine
Drehung von TIV um -2.5° die gekrümmte Form des
Farns ergibt.
TIII ist eine Affinität mit Determinante -0.106, die neben
TII die Blätter der Pflanze produziert.
Abb. 5.2: Die vier affinen Abbildungen des Barnsley-Farns
Die einfachste Erzeugungsmethode ist durch Barnsleys stochastischen
Alghorithmus gegeben. Dabei werden mehrere tausend Punkte den affinen
Abbildungen unterworfen; die jeweils ausgeführte wird mittels Zufallszahlen
ausgelost. Als Punkte werden jeweils die zuletzt erhaltenen Bildpunkte gewählt,
beim Start der Nullpunkt.
Die Wahl der Wahrscheinlichkeiten p wird durch folgende Faustregel bestimmt:
p≈
|aidi – bici|
Σ|aidi – bici|
Das heißt, dass p dem Verhältnis aus der Determinante der Abbildung zur
Summe der Determinanten aller Abbildungen angenähert wird.
In Kapitel 6.4. zeige ich noch mehr Pflanzen und Programme zur Modellierung
durch IFS.
47
Rekursive Strukturen
Programme am TI-92 - 6
6. Programme am TI-92
Da unsere Klasse in der 5. Schulstufe mit programmierfähigen TI-92
Taschenrechnern ausgestattet wurde und die Programmiersprache TI-Basic
primitiv und dadurch sehr verständlich (aber leider auch sehr langsam) ist, habe
ich vier Programme in dieser erstellt, um verschiedene Objekte zu visualisieren.
Alle Programme inkl. Transfersoftware befinden sich auf der beiliegenden CD.
6.1. Cdiv (ad 2.2.)
In Cdiv wird folgendes Modell der Anabaena Catenula (siehe Kapitel 2.2. und
2.7.1.) veranschaulicht, welches auch die kontinuierlichen Wachstumsphasen der
einzelnen Zellen in mehreren Zwischenschritten berücksichtigt:
Durch Beobachtungen im Labor weiß man, dass die kleinen Zellen im
Durchschnitt 20% mehr Zeit zum Reifen bis zur Teilung benötigen. Aus einer
großen Zelle B entstehen innerhalb von vier Schritten Zustände, die mit C,D,E
und F bezeichnet werden. Anschließend findet eine Teilung statt, und es
entstehen entweder zwei Zellen AB oder BA, je nachdem, ob die ursprüngliche
Zelle eine rechte oder linke Tochterzelle war. Eine kleine Zelle A benötigt
hingegen einen Schritt mehr bis zur Teilung. Dies kann durch einen Übergang
vom Typ A zum Typ B leicht modelliert werden. Die Reifungsprozedur lässt sich
in Strings wie folgt veranschaulichen:
Ar  Br  Cr  Dr  Er  Fr  BlAr bzw.
Al  Bl  Cl  Dl  El  Fl  AlBr
Dieses DOL-System ist nun so definiert:
G = ({Ar, Al, Br, Bl, Cr, Cl, Dr, Dl, Er, El, Fr, Fl}, Al, { ArBr, BrCr, CrDr, DrEr,
ErFr, FrBlAr, AlBl, BlCl, ClDl, DlEl, ElFl, FlAlBr})
1-6
Hier die ersten 24 Zustände:
7 - 12 13 - 18
19 – 24
Al
AlBr
AlBrClBr
AlBrClBrClDrClBr
Bl
Cl
BlCr
Cl D r
BlCrDlCr
ClDrElDr
BlCrDlCrDlErDlCr
ClDrElDrElFrElDr
Dl
DlEr
DlErFlEr
DlErFlErFlBlArFlEr
El
Fl
El Fr
ElFrAlBrFr
FlBlArBlCrBlAr
ElFrAlBrFrAlBrClBrAlBrFr
FlBlArBlCrBlArBlCrDlCrBlCrBlAr
FlBlAr
Wie man sieht, sind diese abstrakten Zeichen nicht sehr anschaulich, deshalb ist
der TI-92 eine gute Hilfe zur Übersetzung der Strings in Bilder. In diesem
Progamm werden die Algensegmente durch verschieden lange Rechtecke (in
einzelnen Bildern gespeichert) grafisch visualisiert (Abb. 6.1 (a) und (b)).
48
Rekursive Strukturen
Programme am TI-92 - 6
Abb. 6.1 (a)
Abb. 6.1 (b)
Der Aufbau der Alge bis zum 29. Zustand kann bis zu 1 Minute lang dauern.
Hier ein Programmausschnitt, der zur Ersetzung dient:
Listing
Erklärung
0 k
For i,1,dim(cells)
k+1k
cells[i]+1cellst[k]
If cells[i]=6 then
1cellst[k]:k+1k:8cellst[k]
Endif
If cells[i]=12 then
2cellst[k]:k+1k:7cellst[k]
Endif
Endfor
cellstcells
Initialisiere k
For-Schleife (für i von 1 bis zur Länge der Inputliste)
Inkrementiere k
Segment bei i wächst und wird in cellst gespeichert
Wenn aktuelles Segment Fl (=6), dann:
Zellteilung und wiederholte Inkrementierung von k
Wenn aktuelles Segment Fr (=12), dann:
Zellteilung und wiederholte Inkrementierung von k
Ende der For-Schleife
Rückkoppelung (Outputliste wird zur Inputliste)
Die Input- und Outputlisten werden als cells bzw. cellst bezeichnet. Die
dazugehörigen Positionszeiger sind i und k, die in jedem Durchlauf (k bei jeder
Teilung zusätzlich) inkrementiert werden.
In den If-Schleifen wird der Wert an Position i der Liste cell überprüft und nach
Berücksichtigung der Ersetzungsregeln ein neuer Wert (bei Teilung 2 neue
Werte) in die Liste cellst eingesetzt. Die Zahlen 1 bis 6 und 7 bis 12 stehen für
Al, Bl,..., Fl bzw. Ar, Br,..., Fr.
Die Schleife für die grafische Darstellung lautet:
Listing:
Erklärung:
2xpos
For i,1,dim(cells)
"pic_"&string(cells[i]) pname
Rplcpic #pname,ypos,xpos
xpos+cells[i]+4xpos
If cells[i]>6:xpos-6xpos
EndFor
Initialisiere X-Position (=Abstand vom linken Bildschirmrand)
For-Schleife (für i von 1 bis zur Länge der Liste)
Ermitteln des Bildnamen für aktuelles Segment
Zeichnen des Bildes
Inkrementieren der X-Pos. um richtigen Wert
Korrektur der X-Pos. (nur bei einem rechten Segment)
Ende der For-Schleife
Die den Symbolen Al - Fl und Ar - Fr entsprechenden Bilder heissen pic_1,
pic_2,..., pic_6 bzw. pic_7, pic_8,..., pic_12. Diese werden am Beginn des
Programmes durch Matrizen mit dem Befehl NewPic initialisiert, was den Großteil
des Programmlistings ausmacht.
49
Rekursive Strukturen
Programme am TI-92 - 6
Das Programm läuft bis zur 29. Stufe der Zellteilungen der Alge, um eine
mehrzeilige und dadurch unübersichtliche Kette zu vermeiden.
Cdiv kann durch Überprüfen mit getkey() auf den Wert 264 jederzeit durch
Drücken der ESC-Taste beendet werden.
6.2. Phyllo (ad 4.1.)
Dieses sehr einfache Programm zeichnet in einem bestimmten Radius die
Verteilung von Kernen in einer Pflanzenblüte (siehe Kapitel 4.1.). Dazu wird das
(von mir gezeichnete) Bild seed für die einzelnen Samen benutzt. Es muss ein
Parameter bestimmt werden, der die Abweichung vom goldenen Schnitt angibt
(d.h. phyllo(0) zeichnet die korrekte Version). Screenshots in Abb. 6.2 zeigen die
korrekte Version in (a) und 2 mit geringfügigen Abweichungen in (b) und (c).
Hier das komplette Programmlisting:
Listing:
Erklärung:
phyllo(del)
Prgm
setMode("Exact/Approx","APPROXIMATE")
setMode("Angle","DEGREE")
ClrDraw:Local ang,del,i,r:0ang
For i,40,43
PxlCrcl 53,120,i
EndFor
For i,1,120
RclPic seed,int(50+sin(ang)*3.7*(i)),int(118+cos(ang)*3.7*
(i))
ang+137.50776405004+delang
EndFor
EndPrgm
Rundung einstellen
Grad auf Degree stellen
Initialisierung
Zeichnet 3 Kreise mit Radien 40 bis 43,
die den Rand der Blüte bilden
Beginn der For-Schleife für 120 Kerne
Stellt seed dar
Inkrementiert den Winkel
Ende der For-Schleife
Die Anzahl der Kerne (120), die Konstante c
(3.7) aus der Formel r=c n (siehe Kapitel
4.1.) sowie die Kreisradien (40-43) und
Kreismittelpunkte (120,53) sind willkürlich
gewählte Werte.
Die Darstellung der Kerne dauert höchstens
eine halbe Minute.
Abb. 6.2 (a): phyllo(0)
Abb. 6.2
(b): phyllo(.3)
Abb. 6.2 (c): phyllo(-0.3)
50
Rekursive Strukturen
Programme am TI-92 - 6
6.3. Lsys
Lsys ist das komplexeste Programm, dass ich hier aus Platzmangel nicht
vollständig beschreiben kann. Vielmehr möchte ich die essentiellen Bestandteile
des Programmes aufzeigen und auf die Beschreibung von unwichtigen
Überprüfungsroutinen u.ä. verzichten.
6.3.1. Aufbau
Für mehr Übersichtlichkeit und Schnelligkeit wurde Lsys als Programmkomplex
gestaltet (konkrete Programme bzw. Unterprogramme werde ich durch kursive
Kleinbuchstaben und angehängten Parameterklammern „()“ kennzeichnen):
lsys():
befindet sich als einziges im „Main“-Ordner und ist das auszuführende
Programm. Es ist zuständig für die Initialisierung, die Eingabe, die Berechnung
und Darstellung und die Aufrufung der jeweiligen Unterprogramme (d.h. es ist
das Grundgerüst, von dem aus Verzweigungen stattfinden, die regelmäßig
zurückführen müssen). Ausserdem ist lsys() der größte Bestandteil von Lsys.
lmap1() – lmap7() und lmape():
Diese kleinen Unterprogramme stehen für die verschiedenen vordefinierten
Lindenmayer-Systeme, da sie die Produktionsregeln enthalten und bei jeder
Iteration aufgerufen werden müssen. Sie sind modulartig aufgebaut, wodurch sie
leicht umgeändert werden können, was das Update von neuen Modulen erheblich
erleichtert. Diese pseudo-objektorientierte Struktur soll auch helfen, einen
leichteren Überblick über die Programme zu gewinnen.
lmape() wird bei einem durch den Benutzer definierten L-System verwendet.
Im Durchschnitt sind diese Module ca. 500 Byte klein.
lhelp():
Im Großteil dieses Programmes befindet sich Hilfetext, wodurch sich die Größe
von ca. 4700 Byte erklärt. Neben einer generellen Erklärung wird außerdem
jedes System einzeln beschrieben und vorgegebene Daten zur direkten
Übernahme in das Hauptprogramm verfügbar gemacht. Falls unklarheiten
bestehen sollten, was die Bedeutung der Variablen angeht, finden sich hier
ausführliche Erklärungen.
6.3.2. Programmablauf

Verschiedene Mode- und Graph-Einstellungen und Deaktivierung aktiver
Funktionen und Plots

Definition der lokalen Variablen und Initialisierung der Datenmatrix ldat für
lhelp()

Eingabedialog mit Systemauswahl, möglicher Verzweigung zu alternativem
Eingabedialog (selbst definiertes System) oder zur Hilfe lhelp() (DropDown)
und Parametereingabe (Request):
51
Rekursive Strukturen
Programme am TI-92 - 6
Listing:
Erklärung:
Lbl fstwndw
lfc_lfc:ddg_ddg:deg_deg:strl_strl:sth_sth:ax_ax:drax
_drax:out_out
Dialog
Title "Lsys - Axiom, System und Parameter bestimmen"
Request "Axiom",ax
DropDown "System:",{"Primitiver Busch","Stochastisches
Kraut","Szellsches Kraut","Komplexer Busch","Primitiver
Baum","Koch-Kurve","Zufàllige KochKurve","Eigenes","HILFE"},muse
Text "
Parameter:"
Request " ψ",ddg
Request " l",lfc
Request "Sf",strl
Request " γ",deg
Request " h",sth
EndDlog
If ok=0:Goto ende
lfclfc_:ddgddg_:degdeg_:strlstrl_:sthsth_:axax_:drax
drax_:outout_
setMode("exact/approx","exact")
If muse=9 Then
lhelp()
Goto fstwndw
EndIf

Axiomeingabe
Auswahl des jeweiligen L-Systems (8
für eigenes oder 9 für Hilfe)
Eingabe des Drehwinkels ψ
Eingabe der Einheitslänge im Axiom
Eingabe des Streckfaktors
Eingabe des Gesamtwinkels γ
Eingabe der y-Koordinate des Stammes
Bei Drücken von ESC beende das
Programm
Speicherung der temporären Variablen
in
Wenn Auswahlindikator auf 9, dann
Aufrufung des Hilfeprogrammes
Gehe zu fstwndw
Lbl alfa: Berechnung des Systems in einer For-Schleife durch Benutzung der
jeweiligen Module (Aufrufung eines der Unterprogramme lmap1() – lmap7())
Listing:
Lbl alfa
Loop
ClrDraw
sysbsysa:sthypos:2xpos:1j
If drax=1:Goto draw
"lmap"&string(muse)&"()" #"modul"
For i,1,dim(sysa)
expr(modul)
EndFor

Duplikation der benötigten Variablen
für temporären Zugriff
Erklärung:
Löschen des Bildschirmes
Zuweisung der Listengröße und Position des Stammansatzes
Wenn drax=1, gehe zu draw
Verankerung des gewählten Programmnamens mit der Variable
modul
Schleife zur Erstellung der Liste
Anwendung der jeweiligen Produktionsregeln für das gewählte
System durch Benutzung des geeigneten Moduls
Ende der Schleife
Lbl draw: Zeichnen des Systems in einer For-Schleife durch Laden der
einzelnen Listenelemente
Listing:
Erklärung:
Lbl draw
For i,1,dim(sysb)
If sysb[i]=0 Then
Wenn sysb[i]=0, dann
Try
PxlLine
Zeichne eine Linie
int(ypos),int(xpos),int(ypos+lfc*sin(deg)),int(xpos+lfc*cos(deg))
52
Rekursive Strukturen
PxlCrcl
int(ypos+lfc*sin(deg)),int(xpos+lfc*cos(deg)),int(lfc*0.1+1)
Else
1out
EndTry
ypos+lfc*sin(deg)ypos
xpos+lfc*cos(deg)xpos
EndIf
If sysb[i]=1 Then
Try
PxlLine
int(ypos),int(xpos),int(ypos+lfc*sin(deg)),int(xpos+lfc*cos(deg))
ypos+lfc*sin(deg)ypos
xpos+lfc*cos(deg)xpos
Else
1out
EndTry
EndIf
If sysb[i]=2:deg+ddgdeg
If sysb[i]=3:deg-ddgdeg
If sysb[i]=4 Then
tind+1tind
"temp"&string(tind) tuse
{ypos,xpos,deg}#tuse
EndIf
If sysb[i]=5 Then
#tuse[1] ypos:#tuse[2]xpos:#tuse[3]deg
DelVar #tuse
tind-1tind
"temp"&string(tind)tuse
EndIf
EndFor
Programme am TI-92 - 6
Zeichne ans Ende der Linie eine
entsprechende Knospe
Falls Teile des Bildes außerhalb des
Bildschirms,
setze Indikator out auf 1
Setze die Schildkröte auf die
entsprechende neue Position
Zeichne eine Linie
Setze die Schildkröte auf die
entsprechende neue Position
Falls Teile des Bildes außerhalb des
Bildschirms,
setze Indikator out auf 1
Wenn sysb[i]=2, negative Drehung
Wenn sysb[i]=3, positive Drehung
Wenn sysb[i]=4, dann
Inkrementiere den Klammerindikator
Erstelle temporäre Datei, die den
Zustand der Schildkröte speichert
Wenn sysb[i]=5, dann
Lade Daten aus der temporären
Klammerdatei und lösche sie
Dekrementiere den Klammerindikator
und benenne ihn entsprechend um
Programmintern bestehen die Listen sysa und sysb aus den Zahlen 1 bis 5, die
folgende Bedeutungen haben:
0
1
2
3
4
5
eine normale Linie mit einer Knospe in entsprechender Größe (nutzvoll für
Büsche)
F (normale Linie)
+ (Drehung um deg gegen den Uhrzeigersinn)
– (Drehung um deg gegen den Uhrzeigersinn)
[ (Beginn einer Verzweigung)
] (Ende der Verzweigung)
Der Indikator out kennzeichnet einen nicht dargestellten Bereich des Objektes
(weil außerhalb des Bildschirmes liegend) und iniziiert nach der Grafikroutine ein
Fehlerfenster, falls er auf 1 gesetzt wurde.
53
Rekursive Strukturen
Programme am TI-92 - 6
6.4. Ifs (ad 5.)
Zum Schluss sollen noch zwei kleine Programme namens ifs01() und ifs02()
vorgestellt werden, die ich vom Pascal-Programmcode aus [5], Seite 178 f., auf
den TI-92 abgeändert habe. Da die Algorithmen bis auf einige Kleinigkeiten
gleich sind, befindet sich nur das Listing von ifs01() in diesem Kapitel mit
Screenshots von beiden Programmen. Es wäre möglich gewesen, noch mehr
Programme dieser Art zu erstellen (ifs03(), ifs04(), usw.), doch wäre das reine
Übertragen von Werten aus [5], Kapitel 13, nur Energieverschwendung gewesen.
Listing:
ifs01()
Prgm
setMode("Exact/Approx","APPROXIMATE")
ClrDraw:FnOff :PlotsOff
setGraph("axes","off"):setGraph("grid","off")
{0,0.197, 0.155,0.849}a_
{0, 0.226,0.283,0.037}b_
{0,0.226,0.26, 0.037}c_
{0.16,0.197,0.237,0.849}d_
{0,0,0,0}e_
{0,1.6,0.44,1.6}f_
{0.03,0.14,0.27,1}p_
0x_:0y_
For i_,1,20000
rand()pk
If pk≤p_[1] Then:1k_
ElseIf pk≤p_[2] Then:2k_
ElseIf pk≤p_[3] Then:3k_
Else:4k_
EndIf
a_[k_]*x_+b_[k_]*y_+e_[k_]x1
c_[k_]*x_+d_[k_]*y_+f_[k_]y_
x1x_
PxlOn int(58-x_*22),int(234-y_*23)
EndFor
EndPrgm
Erklärung:
Zuweisung der entsprechenden Tabellenwerte (siehe Tabelle
auf Seite 46)
Beginn der For-Schleife (der Wert 20000 ist willkürlich
gewählt)
Bestimmung einer Zufallszahl
Transformationswahl durch die in p gespeicherten
Wahrscheinlichkeiten und der Zufallszahl pk
Ausführung der gewählten Transformation
Zeichnen des Pixels
Abb. 6.3: Ein durch ifs01()
erstellter Barnsley-Farn nach
Abbruch des Programms beim 7781.
Schritt (links);
ein durch ifs02() erstellter kiefernähnlicher Baum nach Abbruch des
Programms beim 14780. Schritt
(rechts)
54
Rekursive Strukturen
Literaturverzeichnis
Literaturverzeichnis
[1]
Przemyslaw Prusinkiewicz, Aristid Lindenmayer: The algorithmic beauty of
plants, Springer-Verlag New York Inc. 1990
[2]
Heinz-Otto Peitgen, Hartmut Jürgens, Dietmar Saupe: Bausteine des
Chaos: Fraktale, Verlagsgemeinschaft Springer-Verlag, Stuttgart 1992
[3]
Heinz-Otto Peitgen, Hartmut Jürgens, Dietmar Saupe: Chaos: Bausteine
der Ordnung, Verlagsgemeinschaft Springer-Verlag, Stuttgart 1992
[4]
Reinhard Scholl, Olaf Pfeiffer: Natur als Fraktale Grafik, Markt&Technik
Verlag Aktiengesellschaft, München 1991
[5]
Dietmar Herrman: Algorithmen für Chaos und Fraktale, Addison-Wesley
(Deutschland) GmbH, 1994
55
Rekursive Strukturen
Abbildungsverzeichnis
Abbildungsverzeichnis
Titelbild:
Abb. 1.1:
Abb. 1.2:
Abb. 1.3:
Abb. 1.4:
Abb. 1.5:
Abb. 2.1:
Abb. 2.2:
Abb. 2.3:
Abb. 2.4:
Abb. 2.5:
Abb. 2.6:
Abb. 2.8:
Abb. 2.9:
Abb. 2.10:
Abb. 2.11:
Abb. 2.12:
Abb. 2.13:
Abb. 2.14:
Abb. 2.15:
Abb. 2.16:
Abb. 2.17:
Abb. 2.18:
Abb. 2.19:
Abb. 2.20:
Abb. 2.21:
Abb. 2.22:
Abb. 2.23:
Abb. 2.24:
Abb. 3.1:
Abb. 3.2:
Abb. 3.3:
Abb. 4.1:
Abb. 4.2:
Abb. 4.3:
Abb.
Abb.
Abb.
Abb.
Abb.
Abb.
4.4:
4.5:
4.6:
4.7:
5.1:
5.2:
[1] Seite 54 / Figure 2.3
[2] Seite 82 / Abb. 2.1
[2] Seite 36 / Abb. 1.13
[2] Seite 32 / Abb. 1.9
[2] Seite 33 / Abb. 1.10
[2] Seite 33 / Abb. 1.11
[3] Seite 504 / Abb. 6.1
[3] Seite 532 / Abb. 6.22
[2] Seite 87 / Abb. 2.5
[3] Seite 537 / Abb.6.25
Screenshots aus Lsys
[1] Seite 9 / Figure 1.8 und [1] Seite 10 / Figure 1.9 (c) und (e)
[1] Seite 13 / Figure 1.12
[1] Seite 12 / Figure 1.11 (b)
[1] Seite 14 / Figure 1.14
[1] Seite 15 / Figure 1.15
[5] Seite 205 / Bild 14.7
drei Screenshots aus Lsys und [1] Seite 25 / Figure 1.24 (d)–(f)
[1] Seite 26 / Figure 1.25
Screenshots aus Lsys
[1] Seite 33 / Figure 1.30
[1] Seite 34,35 / Figure 1.31
[1] Seite 45 / Figure 1.35
[1] Seite 47 / Figure 1.36
[1] Seite 48 / Figure 1.37 (a)
[1] Seite 48 / Figure 1.37 (b)
[1] Seite 49 / Figure 1.38
[1] Seite 49 / Figure 1.39
[1] Seite 50 / Figure 1.40
[1] Seite 53 / Figure 2.2
[1] Seite 54 / Figure 2.4
[1] Seite 56 / Figure 2.6
[1] Seite 100 / Figure 4.1
[1] Seite 103 / Figure 4.4
http://www.math.smith.edu/~phyllo/GALLERY/margs.jpg von
http://www.math.smith.edu/~phyllo/index.html (9. Februar 2001)
[1] Seite 111 / Figure 4.11
[1] Seite 112 / Figure 4.12
[1] Seite 113 / Figure 4.13
[1] Seite 115 / Figure 4.14
[1] Seite 179 / Figure 8.3
[5] Seite 178 / Bild 13.1
Abbildungen in Kapitel 6 sind ausschließlich Screenshots aus eigenen TI-92Programmen.
56
Rekursive Strukturen
Schülerprotokoll
Schülerprotokoll
Zeit
ca. 1998
Sommer 2000
7.9.2000
16.10.2000
Oktober 2000
27.11.2000
Aktion
Erwerb von Büchern und erstes Interesse für das Thema
Erstellen von Programmen
Festlegen des Themas und des Erwartungshorizonts
Eingrenzung des Themas; Erstellen einer Struktur
Beschaffung von Literatur aus diversen Bibliotheken
Besprechung der Arbeit anhand eines ersten schriftlichen
Entwurfs; Hinweis auf Zitierregeln
24.12.2000 bis Vervollständigung der Programme und Ausbessern von
7.1.2001
Programmierfehlern
22.1.2001
Abgabe einer Rohfassung mit einigen Abbildungen
Jänner 2001
Einscannen von Bildern und Erstellen der restlichen
Abbildungen; Arbeiten am Layout
12.2.2001
Abschlussbesprechung
16.2.2001
Übergabe der Endfassung
57
Rekursive Strukturen
Echtheitserklärung
Echtheitserklärung
Ich, Michael Szell, erkläre hiermit, dass ich diese Arbeit selbst verfasst und außer
der angegebenen Literatur keine weitere verwendet habe.
58