Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Struktur-Funktions-Modelle von Pflanzen

Ähnliche Präsentationen


Präsentation zum Thema: "Struktur-Funktions-Modelle von Pflanzen"—  Präsentation transkript:

1 Struktur-Funktions-Modelle von Pflanzen
- Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 8. Vorlesung:

2 zuletzt: stochastische L-Systeme kontextsensitive L-Systeme
Interpretationsregeln Fichtenmodell

3 als nächstes: Fichtenmodell (Besprechung der Fragen)
der Graph als grundlegende Datenstruktur: Definition Eigenschaften von Graphen Graph-Ersetzungsregeln Funktionsweise von relationalen Wachstumsgrammatiken zwei Regelsorten: L-System- und SPO-Regeln

4 Fichtenmodell in XL (vgl. letzte Vorlesung)
/* Fichtenmodell sm09_fichte.rgg, W.K */ module T; /* terminale Knospe */ module M1; /* Seitenzweigknospe 1. Ordn., mediale Position */ module S1; /* Seitenzweigknospe 1. Ordn., subapikale Pos. */ module M2; /* Seitenzweigknospe 2. Ordn., mediale Pos. */ module S2; module M3; module S3; module GU(float incd, int age) extends F0; /* growth unit */ module BA(int age, super.angle) extends RL(angle); module GA(int age, super.angle) extends RL(angle); module HA(int age, super.angle) extends RL(angle); const int ang = 45; const int x3 = 50; const int[] a = { 0, 15, 25, 32, 37, 40 }; const int[] gg = { 0, 0, 4 }; const int[] hh = { 0, 0, 2, 4, 8 }; int n, k; const float[] prob_n = {0.1, 0.4, 0.3, 0.2}; const int[] n_subap = {5, 6, 7, 8};

5 protected void init() [ Axiom ==> P(2) D(1) L(100) T; ] public void grow() x:T ==> Nl(80*TurtleState.length(x)) GU(2.2, 0) RH(random(0, 360)) { k = 0; } for ((1:3)) /* 3 mediale Seitenäste 1. Ordnung */ ( [ MRel(random(0.2, 0.85)) RH(k*120+normal(0, 5.5)) { k++; } RL(x3+normal(0, 2.2)) BA(0, 0) LMul(0.4) M1 ] ) RH(random(0, 360)) { n = n_subap[distribution(prob_n)]; k = 0; } for ((1:n)) /* n subapikale Seitenäste 1. Ordnung */ ( [ MRel(random(0.85, 1)) RH(k*360/n+normal(0, 3.1)) { k++; } RL(x3+normal(0, 2.2)) BA(0, 0) LMul(0.65) S1 ] ) T; x:S1 ==> Nl(80*TurtleState.length(x)) GU(1.3, 0) [ MRel(random(0.85, 1)) RH(15) RU(ang+normal(0, 2.2)) AdjustLU LMul(0.7) S2 ] [ MRel(random(0.85, 1)) RH(-15) RU(-ang+normal(0, 2.2)) AdjustLU LMul(0.7) S2 ] GA(0, 0) S1; x:M1 ==> Nl(80*TurtleState.length(x)) GU(0.8, 0) RU(ang+normal(0, 2.2)) AdjustLU LMul(0.7) M2 ] RU(-ang+normal(0, 2.2)) AdjustLU LMul(0.7) M2 ] HA(0, 0) M1;

6 x:S2 ==> Nl(80*TurtleState.length(x)) GU(1.3, 0)
[ MRel(random(0.85, 1)) RH(10) RU(ang) AdjustLU LMul(0.7) S3 ] [ MRel(random(0.85, 1)) RH(-10) RU(-ang) AdjustLU LMul(0.7) S3 ] S2; x:M2 ==> Nl(80*TurtleState.length(x)) GU(0.8, 0) RU(ang) AdjustLU LMul(0.7) M3 ] RU(-ang) AdjustLU LMul(0.7) M3 ] M2; x:S3 ==> Nl(80*TurtleState.length(x)) GU(1.3, 0); x:M3 ==> Nl(80*TurtleState.length(x)) GU(0.8, 0); GU(incd, t) ==> DlAdd(incd*(t+1)) GU(incd, t+1); DlAdd(arg) ==> ; BA(age, angle) ==> BA(age+1, a[age<5 ? age+1 : 5]); GA(age, angle) ==> GA(age+1, gg[age<2 ? age+1 : 2]); HA(age, angle) ==> HA(age+1, hh[age<4 ? age+1 : 4]); ]

7 - was ist unklar? - wie lässt sich das Dickenwachstum verstärken - für alle Wachstumseinheiten (growth units, GU)? - nur für den Stamm? - wie lässt sich (durch Veränderung des Längenwachstums) eine schlankere Kronenform erreichen? - wie lässt sich die Zahl der Haupt-Seitenäste vermindern?

8 Der Schritt zu Graph-Grammatiken
Nachteil von L-Systemen: • in L-Systemen mit Verzweigungen (über Turtle-Kommandos) nur 2 mögliche Relationen zwischen Objekten: "direkter Nachfolger" und "Verzweigung" Erweiterungen: • Zulassen weiterer Relationstypen (beliebig wählbar) • Zulassen von Zyklen  Graph-Grammatik

9 Ein Graph: eine Art, Daten zu organisieren
Def.: eine Menge von Knoten, (teilweise) verbunden durch (gerichtete) Kanten (Relationen). T T T I I I Kantentypen (Relationen): Nachfolgerbeziehung Verfeinerungsbeziehung T I Knoten (T = Trieb, I = Internodium)

10 Eine Zeichenkette (string): ein sehr einfacher Graph
Eine Zeichenkette kann man als 1-dimensionalen Graphen mit nur einem Kantentyp auffassen Nachfolger-Kanten (successor relation) A B A C A A B A C

11 Finden Sie so eine Struktur irgendwo im realen Leben wieder?

12 vielleicht jetzt? Bud Shoot Root

13 es handelt sich um einen Baum. Bäume sind spezielle Graphen.
4 3 Knotentypen Wurzelkompartiment Jahrestriebe Knospen 3 2 2 Kantentypen Nachfolgerrelation (selbe Achse) Verzweigungsrelation (neue Achse) 1

14 zugrundeliegendes Teilgebiet der Mathematik: Topologie

15 zwei isomorphe Graphen:

16

17 nun werden die Graphen zeitlich veränderlich gemacht!
Graph-Grammatik (Beispiel) Regel:

18 Graph-Grammatik (Beispiel)
Regel: Anwendung: hier nicht anwendbar! (falscher Kantentyp)

19 Eine relationale Wachstumsgrammatik (RGG)
Eine relationale Wachstumsgrammatik (RGG)* (spezieller Typ von Graph-Grammatik) enthält: ein Alphabet die Definition aller erlaubten Knotentypen Kantentypen (Typen von Relationen) das Axiom ein initialer Graph, der aus Elementen des Alphabets zusammengesetzt ist eine Menge von Graphersetzungsregeln. * relational growth grammar

20 Eine relationale Wachstumsgrammatik enthält:
ein Alphabet die Definition aller erlaubten Knotentypen Typen von Relationen das Axiom ein initialer Graph, der aus den Elementen des Alphabets zusammengesetzt ist eine Menge von Graphersetzungsregeln Shoot Root Bud Nachfolger Verzweigung Root Shoot Bud

21 Was sind nun diese Graphersetzungsregeln (RGG-Regeln) ?
und wie wendet man sie an?

22 Graphersetzungsregeln sind
Regeln für die Transformation eines Graphen (Teilgraphen) in einen anderen Graphen. eine Regel besteht im wesentlichen aus: linker Regelseite ==> rechter Regelseite

23 Wie eine RGG-Regel angewandt wird
jede linke Regelseite beschreibt einen Teilgraphen (ein Muster aus Knoten und Kanten, das im Gesamtgraphen gesucht wird), welcher ersetzt wird bei der Regelanwendung. jede rechte Regelseite definiert einen neuen Teilgraphen, der als Ersatz für den entfernten Teilgraphen eingefügt wird.

24 einfaches Beispiel mit Zeichenkette
Jedes Vorkommen des in der linken Regelseite definierten Teilgraphen wird ersetzt! A B C A C A wird ersetzt durch D D B C D C 2 Regelanwendungen im selben Zeitschritt.

25 eine vollständige RGG-Regel kann 5 Teile enthalten:
(* Kontext *), Linke Regelseite, ( Bedingung ) ==> Rechte Regelseite { imperativer XL-Code }

26 Kontext-Beispiel (* Kontext *), Linke Regelseite, (Bedingung) ==>
Rechte Regelseite { imperativer XL-Code } Beispiel: A B C A C A (* B *) wird ersetzt durch D D B C A C

27 Bedingungs-Beispiel (* Kontext *), Linke Regelseite, ( Bedingung )
==> Rechte Regelseite { imperativer XL-Code } Beispiel: A B C A C a:A B ( a[length] > 10 ) wird ersetzt durch D D C A C 2 mögliche Ergebnisse, abhängig vom aktuellen Längenparameter des A-Knotens A B C A C

28 RELATIONALE WACHSTUMSGRAMMATIKEN
(RGG: Relational Growth Grammars, parallele Graph-Gramm.) Zusammenfassung: Aufbau einer Regel einer RGG imperativer Code

29 • Grammatik modifiziert direkt den Graphen, Umweg über String-Codierung entfällt (bzw. wird nur noch für Regel-Eingabe gebraucht)

30 RGG als Verallgemeinerungen von L-Systemen:
Zeichenketten entsprechen speziellen Graphen In Textform schreiben wir allgemeine (selbstdefinierte) Kanten als -kantensorte-> Kanten des speziellen Typs "Nachfolger" werden meist als Leerzeichen geschrieben (statt -successor->)

31 für allgemeine Graphen:
Problem der Einbettung der rechten Regelseite Regel: Anwendung:

32 2 Regeltypen für Graph-Ersetzungsregeln in XL:
● L-System-Regel, Symbol: ==> sorgt für Einbettung der rechten Seite in den Graphen (d.h. ein- und ausgehende Kanten werden beibehalten) mit Standard-Vorgabe ● SPO-Regel, Symbol: ==>> Ein- und ausgehende Kanten werden gelöscht (sofern ihre Beibehaltung nicht explizit in der Regel angegeben wird) „SPO“ von „single pushout“ - ein Fachbegriff aus der universellen Algebra

33 A B C Beispiel: a:A ==>> a C (SPO-Regel)
B ==> D E (Regeln vom L-System-Typ) C ==> A Ausgangs-graph: A B C

34 A B C D E A a:A ==>> a C (SPO-Regel)
B ==> D E (Regeln vom L-System-Typ) C ==> A A B C D E A

35 A B C D E A a: a:A ==>> a C (SPO-Regel)
B ==> D E (Regeln vom L-System-Typ) C ==> A A B C a: D E A

36 A D E A C a: a:A ==>> a C (SPO-Regel)
B ==> D E (Regeln vom L-System-Typ) C ==> A A D E A a: = Endergebnis C

37 Testen Sie das Beispiel sm09_b27.rgg :
module A extends Sphere(3); protected void init() [ Axiom ==> F(20, 4) A; ] public void runL() [ A ==> RU(20) F(20, 4) A; ] public void runSPO() A ==>> ^ RU(20) F(20, 4, 5) A; (^ bezeichnet den Wurzelknoten im aktuellen Graphen)


Herunterladen ppt "Struktur-Funktions-Modelle von Pflanzen"

Ähnliche Präsentationen


Google-Anzeigen