Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2017 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 9. Vorlesung: 22. 6. 2017 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 0 X + Leaf 1 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 3DAnsicht 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). 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) transitive Hülle: (-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, sm09_b30.rgg