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+FFF, unten FF+FF+F+FFF+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 XF 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 nm ist. Analog entspricht der Abstand zwischen den Kreisen 0 und mn auf der n-Spirale gemessen mn, woraus die Gleichung 42 Rekursive Strukturen (III) Phyllotaxis - 4 nm – mn = 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) nm – mn = 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 (nm)² + (mnh)² = (nd)² (mm)² + (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(nm+mn) / (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) nm + mn = 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, { ArBr, BrCr, CrDr, DrEr, ErFr, FrBlAr, AlBl, BlCl, ClDl, DlEl, ElFl, FlAlBr}) 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+1k cells[i]+1cellst[k] If cells[i]=6 then 1cellst[k]:k+1k:8cellst[k] Endif If cells[i]=12 then 2cellst[k]:k+1k:7cellst[k] Endif Endfor cellstcells 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: 2xpos For i,1,dim(cells) "pic_"&string(cells[i]) pname Rplcpic #pname,ypos,xpos xpos+cells[i]+4xpos If cells[i]>6:xpos-6xpos 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:0ang 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+delang 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 lfclfc_:ddgddg_:degdeg_:strlstrl_:sthsth_:axax_:drax drax_:outout_ 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 sysbsysa:sthypos:2xpos:1j 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 1out 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 1out EndTry EndIf If sysb[i]=2:deg+ddgdeg If sysb[i]=3:deg-ddgdeg If sysb[i]=4 Then tind+1tind "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-1tind "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_ 0x_:0y_ For i_,1,20000 rand()pk If pk≤p_[1] Then:1k_ ElseIf pk≤p_[2] Then:2k_ ElseIf pk≤p_[3] Then:3k_ Else:4k_ EndIf a_[k_]*x_+b_[k_]*y_+e_[k_]x1 c_[k_]*x_+d_[k_]*y_+f_[k_]y_ x1x_ 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