ein weiterer Regeltyp

Werbung
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
Herunterladen