Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2018 - Folien: Winfried Kurth – Vorlesung: Johannes Merklein Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 9. Vorlesung: 14. 6. 2018
zuletzt: Graph als mathematische Grundstruktur Graph-Ersetzungsregeln zwei Regelsorten: L-System- und SPO-Regeln
als nächstes: ein weiterer Regeltyp: Aktualisierungsregeln Notation von Graphen in XL der aktuelle Graph in GroIMP abgeleitete Relationen (insbes. transitive Hüllen)
Wiederholung: Relationale Wachstumsgrammatiken (RGG: Relational Growth Grammars, parallele Graph-Gramm.) Zusammenfassung: Aufbau einer Regel einer RGG
ein weiterer Regeltyp: Aktualisierungsregeln manchmal will man gar nichts an der Graph-Struktur ändern, sondern nur Attribute eines einzelnen Knotens verändern (z.B. Berechnung der Photosyntheseleistung für ein Blatt). Dazu gibt es einen eigenen Regeltyp: A ::> { imperativer Code }; Testen Sie die Beispiele sm09_b25.rgg, sm09_b16.rgg, sm09_b18.rgg
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: />
Darstellung von Graphen
selbstdefinierte Kantentypen ... const int xxx = EDGE_0; // oder EDGE_1, ..., EDGE_14 ... Verwendung im Graphen: -xxx->, <-xxx-, -xxx-
(vgl. Kniemeyer 2008, S. 150 und 403)
Notation von Graphen in XL Beispiel: wird im Programmcode dargestellt als (die Darstellung ist nicht eindeutig!) ( >: Nachfolgerkante, +: Verzweigungskante)
wie lässt sich der folgende Graph im Code textuell beschreiben? Bud > 1 X + Leaf
RU(30), A, B: normalerweise nicht (wenn nicht mit „extends“ 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).
Verfolgen Sie die Veränderung des Graphen, wenn Sie die Regeln 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)!
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
abgeleitete Relationen Relation zwischen Knoten, die durch mehrere Kanten desselben Typs (hintereinander) verbunden sind: „transitive Hülle“ der ursprünglichen Relation (Kante)
reflexiv-transitive Hülle (auch „Knoten steht in Relation zu (-kantentyp->)+ reflexiv-transitive Hülle (auch „Knoten steht in Relation zu sich selbst“ zugelassen): (-kantentyp->)* z.B. für die Nachfolgerrelation: (>)* gemeinsame transitive Hülle der speziellen Kantentypen „Nachfolger“ und „Verzweigung“, in umgekehrter Richtung: (-ancestor->)* Interpretation: diese Relation besteht zu allen „Vorgängerknoten“ in einem Baum entlang des Pfades zur Wurzel.
(diese Relationen erstrecken sich nur bis zum ersten Knoten vom Typ B)
unterhalb des Blattes
ancestor: nächster Vorgängerknoten, der einen gegebenen Knotentyp hat descendants: alle Nachfolger, die einen geg. Knotentyp haben minDescendants: nächste Nachfolger, die einen geg. Knotentyp haben (Knoten anderer Typen werden übersprungen) Nachfolgerkante Verzweigungskante
Testen Sie die Beispiele sm09_b28.rgg, sm09_b29.rgg,