Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2010 - Winfried Kurth

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

description

Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2010 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 8. Vorlesung: 17. 6. 2010. zuletzt: Graphen als mathematische Grundstruktur ein Exkurs: topologische Analyse von Graphen - PowerPoint PPT Presentation

Transcript of Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2010 - Winfried Kurth

  • 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: />

  • Notationen fr spezielle Kantentypen>Nachfolgerkante vorwrtsVerzweigungskante vorwrtsVerfeinerungskante vorwrtsbeliebige Kante vorwrts
  • 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).