Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2009 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik."—  Präsentation transkript:

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

2 zuletzt: L-System-Beispiele Verwendung von imperativem Code in XL-Programmen konditionale Regelanwendung stochastische L-Systeme Ausbreitungsmodelle für Pflanzen in der Ebene kontextsensitive L-Systeme Einbau von Texturen in Pflanzenmodelle Anlegen eines Projekts in GroIMP

3 als nächstes: ein neuer Regeltyp: Interpretationsregeln Graphen als mathematische Grundstruktur topologische Indices Graph-Ersetzungsregeln zwei Regeltypen: L-System- und SPO-Regeln

4 Interpretationsregeln Einbau einer weiteren Regelanwendung unmittelbar vor der grafischen Interpretation (ohne Wirkung auf die nächste Generation) Interpretationsregel- Anwendung Turtle-Interpretation

5 Beispiel: module MainBud(int x) extends Sphere(3) {{setShader(GREEN);}}; module LBud extends Sphere(2) {{setShader(RED);}}; module LMeris; module AMeris; module Flower; const float d = 30; const float crit_dist = 21; protected void init() [ Axiom ==> MainBud(10); ] public void run() { [ MainBud(x) ==> F(20, 2, 15) if (x > 0) ( RH(180) [ LMeris ] MainBud(x-1) ) else ( AMeris ); LMeris ==> RU(random(50, 70)) F(random(15, 18), 2, 14) LBud; LBud ==> RL(90) [ Flower ]; AMeris ==> Scale(1.5) RL(90) Flower; /* Flower: hier nur ein Symbol */ ] applyInterpretation(); /* Aufruf der Interpretationsregelausfuehrung (im imperativen Teil {... } !) */ } protected void interpret() /* Block mit Interpretationsregeln */ [ Flower ==> RH(30) for ((1:5)) ( RH(72) [ RL(80) F(8, 1, 9) ] ); ]

6 public void run() { [ Axiom ==> A; A ==> Scale(0.3333) for (int i:(-1:1)) for (int j:(-1:1)) if ((i+1)*(j+1) != 1) ( [ Translate(i, j, 0) A ] ); ] applyInterpretation(); } public void interpret() [ A ==> Box; ] weiteres Beispiel: erzeugt den sogenannten Menger-Schwamm (ein Fraktal)

7 public void run() { [ Axiom ==> A; A ==> Scale(0.3333) for (int i:(-1:1)) for (int j:(-1:1)) if ((i+1)*(j+1) != 1) ( [ Translate(i, j, 0) A ] ); ] applyInterpretation(); } public void interpret() [ A ==> Box; ] (a) (b)(c) A ==> Sphere(0.5); A ==> Box(0.1, 0.5, 0.1) Translate(0.1, 0.25, 0) Sphere(0.2);

8 was wird durch dieses Beispiel erzeugt? public void run() { [ Axiom ==> [ A(0, 0.5) D(0.7) F(60) ] A(0, 6) F(100); A(t, speed) ==> A(t+1, speed); ] applyInterpretation(); } public void interpret() [ A(t, speed) ==> RU(speed*t); ]

9 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

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

11 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 A A C C A B

12 Finden Sie so eine Struktur irgendwo im realen Leben wieder? S RS B S B B B S B B B S B B S B S B B B S B B B S B B S B S B B B S B B B S B B

13 vielleicht jetzt? Bu d Shoot Bu d Shoot Bud Shoot Bu d Shoot Bu d Shoot Bu d Shoot Bud Shoot Bu d Shoot Bu d Root

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

15 zugrundeliegendes Teilgebiet der Mathematik: Topologie

16 zwei isomorphe Graphen:

17

18

19

20

21

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

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

24 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

25 Erinnern Sie sich? Bu d Shoot Bu d Shoot Bud Shoot Bu d Shoot Bu d Shoot Bu d Shoot Bud Shoot Bu d Shoot Bu d Root

26 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 Bu d RootShoot Bu d Nachfolger Verfeinerung

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

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

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

30 einfaches Beispiel mit Zeichenkette Jedes Vorkommen des in der linken Regelseite definierten Teilgraphen wird ersetzt! ABCA DBCD AD wird ersetzt durch 2 Regelanwendungen im selben Zeitschritt. C C

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

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

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

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

35 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-> )

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

37 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) 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

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

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

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

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

42 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)

43 Hausaufgabe: Lesen Sie die Abschnitte 3.1 bis 3.10 (S ) aus der Dissertation von Ole Kniemeyer ( opus-5937 ).


Herunterladen ppt "Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2009 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik."

Ähnliche Präsentationen


Google-Anzeigen