Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


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

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

2 zuletzt: Einbau von Texturen in Pflanzenmodelle Anlegen eines Projekts in GroIMP stochastische L-Systeme kontextsensitive L-Systeme Interpretationsregeln

3 als nächstes: der Graph als grundlegende Datenstruktur: Definition Eigenschaften von Graphen Graph-Ersetzungsregeln Funktionsweise von relationalen Wachstumsgrammatiken zwei Regelsorten: L-System- und SPO-Regeln Notation von Graphen in der Sprache XL

4 Wiederholung: Interpretationsregeln Interpretationsregel- Anwendung Turtle-Interpretation

5 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); ]

6 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

7 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

8 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

9 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

10 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

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

12 zugrundeliegendes Teilgebiet der Mathematik: Topologie

13 zwei isomorphe Graphen:

14

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

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

17 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

18 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 Verzweigung

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

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

21 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.

22 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

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

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

25 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

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

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

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

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

30 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

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

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

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

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

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

36 Darstellung von Graphen in der Programmiersprache XL ● (neue) Knotentypen müssen mit „ module “ deklariert werden ● Knoten können alle Java-Objekte sein. Bei eigenen module -Deklarationen können auch Methoden (Funktionen) und zusätzliche Variablen mitdeklariert werden, wie in Java ● Notation für Knoten in einem Graphen: Knotentyp, optional davor: bezeichner: Beispiele: A, Meristem(t), b:Bud ● Notation für Kanten: - Kantenbezeichner ->, <- Kantenbezeichner - ● Spezielle Kantentypen: Nachfolgerkante: > Verzweigungskante: +> Verfeinerungskante: />

37 Darstellung von Graphen

38 selbstdefinierte Kantentypen const int xxx = EDGE_0; // oder EDGE_1,..., EDGE_14... Verwendung im Graphen: -xxx->, <-xxx-, -xxx-

39 (vgl. Kniemeyer 2008, S. 150 und 403)

40 Notation von Graphen in XL Beispiel: wird im Programmcode dargestellt als (die Darstellung ist nicht eindeutig!) ( >: Nachfolgerkante, +: Verzweigungskante)

41 wie lässt sich der folgende Graph im Code textuell beschreiben? X Bud Leaf + > 01

42 Der aktuelle Graph GroIMP führt immer einen Graphen mit, der die gesamte aktuelle Strukturinformation beinhaltet. Dieser wird durch Anwendung der Regeln umgeformt. Achtung: Nicht alle Knoten des Graphen werden in der 3D- Ansicht durch sichtbare Objekte dargestellt! - F0, F(x), Box, Sphere : ja - RU(30), A, B : normalerweise nicht (wenn nicht mit „ extends “ aus sichtbaren Objekten abgeleitet) Der Graph kann in der 2D-Graphansicht komplett dargestellt werden (in GroIMP: Panels - 2D - Graph).

43 Laden Sie eine Beispiel-rgg-Datei in GroIMP und führen Sie einige Schritte aus (verwenden Sie keine zu komplexe Struktur). Öffnen Sie die 2D-Graphansicht, verankern Sie mit der Maus das Fenster in der GroIMP-Oberfläche und testen Sie verschiedene Layouts (Layout - Edit): GeneralPurpose Tree Sugiyama Square Circle Random SimpleEdgeBased Fruchterman Verfolgen Sie die Veränderung des Graphen, wenn Sie die Regeln anwenden ( redraw anklicken)!

44 was ist von der in XL erzeugten Graph-Struktur sichtbar (in der 3D-Ansicht) ? alle Geometrieknoten, die von der Wurzel (Zeichen: ^) des Graphen über genau einen Pfad, der nur aus "successor"- und "branch"-Kanten besteht, erreichbar sind. Erzwingen, dass ein Objekt auf jeden Fall sichtbar ist: ==>> ^ Objekt

45 Beispiel für Anwendung einer „echten“ Graph- Ersetzungsregel: Entfernung von doppelten Verbindungen (über Nachfolger- oder Verzweigungskanten) zu einem Geometrieobjekt, z.B. einem Zylinder (zwecks Sicherstellung der Sichtbarkeit) ( Node ist eine allgemeine Oberklasse für alle Knoten im Graphen) (m:Node) --> c:Cylinder (* <-- n:Node *), (m != n) ==>> c ;  es bleibt nur c <-- n, der Knoten m wird gelöscht.


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

Ähnliche Präsentationen


Google-Anzeigen