Struktur-Funktions-Modelle von Pflanzen- Sommersemester 2010 -Winfried KurthUniversitt Gttingen, Lehrstuhl Computergrafik und kologische Informatik
8. Vorlesung: 17. 6. 2010
zuletzt:
Graphen als mathematische Grundstruktur ein Exkurs: topologische Analyse von Graphen Graph-Ersetzungsregeln zwei Regeltypen: L-System- und SPO-Regeln
als nchstes:
Die Sprache XL: berblick zu wichtigen Eigenschaften Kantentypen (Relationen) Graphansicht in GroIMP, Graphlayouts sequenzieller und paralleler Ableitungsmodus Aktualisierungsregeln
imperativobjektorientiertregelbasiertJavaXLDie Sprache XLeXtended L-system languageEinordnung in die Programmierparadigmen:
Die Sprache XL
Sprachspezifikation: Kniemeyer (2008)Dissertation:http://nbn-resolving.de/urn/resolver.pl?urn=urn:nbn:de:kobv:co1-opus-5937
Erweiterung von Java erlaubt zugleich Spezifikation von L-Systemen und RGG (Graph-Grammatiken) in intuitiv verstndlicher Regelschreibweise
prozedurale Blcke, hnlich wie in Java: { ... }
regelorientierte Blcke (RGG-Teil): [ ... ]
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Beispiel: XL-Programm fr die Kochsche Kurve
public void derivation() [ Axiom ==> RU(90) F(10); F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3); ]Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Beispiel: XL-Programm fr die Kochsche Kurve
public void derivation() [ Axiom ==> RU(90) F(10); F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3); ]Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-ObjekteKnoten des GraphenKanten (Typ Nachfolger)
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Spezielle Knoten: Geometrieobjekte Box, Sphere, Cylinder, Cone, Frustum, Parallelogram...
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Spezielle Knoten: Geometrieobjekte Box, Sphere, Cylinder, Cone, Frustum, Parallelogram... Zugriff auf Attribute ber die Parameterliste:Box(x, y, z) (Lnge, Breite, Hhe) oder mit speziellen Funktionen: Box(...).(setColor(0x007700)) (Farbe)
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Spezielle Knoten: Geometrieobjekte Box, Sphere, Cylinder, Cone, Frustum, Parallelogram... Transformationsknoten Translate(x, y, z), Scale(cx, cy, cz), Scale(c), Rotate(a, b, c), RU(a), RL(a), RH(a), RV(c), RG, ...
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Spezielle Knoten: Geometrieobjekte Box, Sphere, Cylinder, Cone, Frustum, Parallelogram... Transformationsknoten Translate(x, y, z), Scale(cx, cy, cz), Scale(c), Rotate(a, b, c), RU(a), RL(a), RH(a), RV(c), RG, ... Lichtquellen PointLight, DirectionalLight, SpotLight, AmbientLight
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Regeln in Blcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Regeln in Blcken [...] organisierbar, Steuerung der Anwendung durch KontrollstrukturenBeispiel: Regeln fr den stochastischen BaumAxiom ==> L(100) D(5) A;A ==> F0 LMul(0.7) DMul(0.7) if (probability(0.5)) ( [ RU(50) A ] [ RU(-10) A ] ) else ( [ RU(-50) A ] [ RU(10) A ] );
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Regeln in Blcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen parallele Regelanwendung
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Regeln in Blcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen parallele Regelanwendung (kann modifiziert werden: Sequenzieller Modus einstellbar, gleich mehr)
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Regeln in Blcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen parallele Regelanwendung parallele Ausfhrung von Zuweisungen mglichspezieller Zuweisungsoperator := neben dem normalen =Quasiparallele Zuweisung an die Variablen x und y: x := f(x, y); y := g(x, y);
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Regeln in Blcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen parallele Regelanwendung parallele Ausfhrung von Zuweisungen mglich Operatorberladung (z.B. + fr Zahlen wie fr Vektoren)
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Regeln in Blcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen parallele Regelanwendung parallele Ausfhrung von Zuweisungen mglich Operatorberladung (z.B. + fr Zahlen wie fr Vektoren) mengenwertige Ausdrcke (genauer: Producer statt Mengen)
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Regeln in Blcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen parallele Regelanwendung parallele Ausfhrung von Zuweisungen mglich Operatorberladung (z.B. + fr Zahlen wie fr Vektoren) mengenwertige Ausdrcke (genauer: Producer statt Mengen) Graph-Abfragen (queries) zur Analyse der aktuellen Struktur
Beispiel fr Graph-query:Binrer Baum, Wachstum soll nur erfolgen, wenn gengender Abstand zu anderen F-Objekten
Axiom ==> F(100) [ RU(-30) A(70) ] RU(30) A(100);a:A(s) ==> if ( forall(distance(a, (* F *)) > 60) ) ( RH(180) F(s) [ RU(-30) A(70) ] RU(30) A(100) )
ohne die if-Bedingung mit der if-Bedingung
Eigenschaften der Sprache XL: Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Regeln in Blcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen parallele Regelanwendung parallele Ausfhrung von Zuweisungen mglich Operatorberladung (z.B. + fr Zahlen wie fr Vektoren) mengenwertige Ausdrcke (genauer: Producer statt Mengen) Graph-Abfragen (queries) zur Analyse der aktuellen Struktur aggregierende Operatoren (z.B. sum, mean, empty, forall, selectWhereMin)
Darstellung von Graphen in XL Knotentypen mssen mit module deklariert werden Knoten knnen alle Java-Objekte sein. Bei eigenen module-Deklarationen knnen auch Methoden (Funktionen) und zustzliche Variablen mitdeklariert werden, wie in Java Notation fr Knoten in einem Graphen: Knotentyp, optional davor: bezeichner: Beispiele: A, Meristem(t), b:Bud Notation fr Kanten in einem Graphen: -Kantenbezeichner->, , > oder (Leerstelle) Verzweigungskante: -branch->, +> oder [ Verfeinerungskante: />
selbstdefinierte Kantentypenconst int xxx = EDGE_0; // oder EDGE_1, ..., EDGE_14...Verwendung im Graphen: -xxx->, : Nachfolgerkante, +: Verzweigungskante)
wie lsst sich der folgende Graph im Code textuell beschreiben?XBudLeaf+>01
abgeleitete Relationen
Relation zwischen Knoten, die durch mehrere Kantendesselben Typs (hintereinander) verbunden sind:transitive Hlle der ursprnglichen Relation (Kante)
Bezeichnungsweise fr die transitive Hlle in XL:(-kantentyp->)+reflexiv-transitive Hlle (auch Knoten steht in Relation zu sich selbst zugelassen):(-kantentyp->)*z.B. fr die Nachfolgerrelation: (>)*gemeinsame transitive Hlle der speziellen KantentypenNachfolger und Verzweigung, in umgekehrter Richtung:-ancestor->Interpretation: diese Relation besteht zu allen Vorgngerknoten in einem Baum entlang des Pfades zur Wurzel.Nchste Nachfolger eines bestimmten Knotentyps:-minDescendants-> (Knoten anderen Typs werden bersprungen)
NachfolgerkanteVerzweigungskanteRelationancestorminDescendants
Der aktuelle GraphGroIMP fhrt 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).
Laden Sie eine Beispiel-rgg-Datei in GroIMP und fhren 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-Oberflche und testen Sie verschiedene Layouts (Layout - Edit):TreeSugiyamaSquareCircleRandomSimpleEdgeBasedFruchtermanVerfolgen Sie die Vernderung desGraphen, wenn Sie die Regelnanwenden (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
Ableitungsmodi in XLstandardmig voreingestellt: parallele Regelanwendung (wie bei L-Systemen)Umschalten auf sequenzielle Anwendung (in jedem Schritt wird dann hchstens eine Regel angewandt):setDerivationMode(SEQUENTIAL_MODE)
Rckschaltung auf parallel:setDerivationMode(PARALLEL_MODE)
testen Sie das Beispiel sm09_b32.rgg
ein weiterer Regeltyp:Aktualisierungsregelnmanchmal will man gar nichts an der Graph-Struktur ndern, sondern nur Attribute eines einzelnen Knotens verndern (z.B. Berechnung der Photosyntheseleistung fr ein Blatt).Dazu gibt es einen eigenen Regeltyp:A ::> { imperativer Code };
Testen Sie die Beispiele sm09_b25.rgg, sm09_b16.rgg,sm09_b17.gsz, sm09_b18.rgg
Hausaufgabe:Lesen Sie die Abschnitte 3.1 bis 3.10 (S. 17-30) aus der Dissertation von Ole Kniemeyer (http://nbn-resolving.de/urn/resolver.pl?urn=urn:nbn:de:kobv:co1-opus-5937).