Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Benjamin Huber Geändert vor über 5 Jahren
1
Struktur-Funktions-Modelle von Pflanzen
- Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 10. Vorlesung:
2
zuletzt: ein weiterer Regeltyp: Aktualisierungsregeln
Notation von Graphen in XL der aktuelle Graph in GroIMP abgeleitete Relationen (transitive Hülle)
3
als nächstes: Die Sprache XL: Übersicht Queries im Graphen
Die Software GroIMP: Übersicht ein erstes Modell für Beschattung
4
Die Sprache XL XL „eXtended L-system language“
Einordnung in die Programmierparadigmen: imperativ objektorientiert regelbasiert Java XL
5
Sprachspezifikation: Kniemeyer (2008)
Die Sprache XL Sprachspezifikation: Kniemeyer (2008) Dissertation: Erweiterung von Java erlaubt zugleich Spezifikation von L-Systemen und RGG (Graph-Grammatiken) in intuitiv verständlicher Regelschreibweise imperative Blöcke, ähnlich wie in Java: { ... } regelorientierte Blöcke (RGG-Teil): [ ... ]
6
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
7
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Beispiel: XL-Programm für die Koch‘sche 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); ]
8
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Beispiel: XL-Programm für die Koch‘sche 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); ] Knoten des Graphen Kanten (Typ „Nachfolger“)
9
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte Spezielle Knoten: Geometrieobjekte Box, Sphere, Cylinder, Cone, Frustum, Parallelogram...
10
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) (Länge, Breite, Höhe) oder mit speziellen Funktionen: Box(...).(setColor(0x007700)) (Farbe)
11
Zugriff auf Knotenattribute: Beispiel sm09_b26.rgg
module Knospe() extends Sphere(0.1) {{ setShader(RED); }}; module Internodium() extends F(1) {{ setShader(GREEN); setScale(1); }}; protected void init() [ Axiom ==> Internodium() Knospe(); ] public void run1() [ i:Internodium ::> i[length] = i[length] + 0.1; public void run2() [ i:Internodium ::> i.length = i.length + 0.1; public void run3() [ i:Internodium ::> i[scale] += 0.1; public void run4() [ i:Internodium ::> i.setScale(1);
12
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, ...
13
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
14
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte ● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
15
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte ● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen Beispiel: Regeln für den stochastischen Baum Axiom ==> 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 ] );
16
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte ● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen ● parallele Regelanwendung
17
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte ● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen ● parallele Regelanwendung (kann modifiziert werden: Sequenzieller Modus einstellbar, später mehr)
18
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte ● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen ● parallele Regelanwendung ● parallele Ausführung von Zuweisungen möglich spezieller Zuweisungsoperator := neben dem normalen = Quasiparallele Zuweisung an die Variablen x und y: x := f(x, y); y := g(x, y);
19
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte ● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen ● parallele Regelanwendung ● parallele Ausführung von Zuweisungen möglich ● Operatorüberladung (z.B. „+“ für Zahlen wie für Vektoren)
20
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte ● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen ● parallele Regelanwendung ● parallele Ausführung von Zuweisungen möglich ● Operatorüberladung (z.B. „+“ für Zahlen wie für Vektoren) ● mengenwertige Ausdrücke (genauer: „Producer“ statt Mengen)
21
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte ● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen ● parallele Regelanwendung ● parallele Ausführung von Zuweisungen möglich ● Operatorüberladung (z.B. „+“ für Zahlen wie für Vektoren) ● mengenwertige Ausdrücke (genauer: „Producer“ statt Mengen) ● Graph-Abfragen (queries) zur Analyse der aktuellen Struktur
22
Beispiel für Graph-query:
Binärer Baum, Wachstum soll nur erfolgen, wenn genügender 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
23
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte ● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen ● parallele Regelanwendung ● parallele Ausführung von Zuweisungen möglich ● Operatorüberladung (z.B. „+“ für Zahlen wie für Vektoren) ● mengenwertige Ausdrücke (genauer: Producer statt Mengen) ● Graph-Abfragen (queries) zur Analyse der aktuellen Struktur ● aggregierende Operatoren (z.B. „sum“, „mean“, „empty“, „forall“, „selectWhereMin“)
25
Anfragen (queries) in den erzeugten Graphen
Möglichkeit der Verbindung von Struktur und Funktion Beispiel: suche alle Blätter, die Nachfolger des Knotens c sind, und summiere deren Fläche query
26
Anfragen (queries) in den erzeugten Graphen
Möglichkeit der Verbindung von Struktur und Funktion Beispiel: suche alle Blätter, die Nachfolger des Knotens c sind, und summiere deren Fläche query transitive Hüllenbildung Aggregationsoperator
27
Anfragen (queries) in den erzeugten Graphen
Möglichkeit der Verbindung von Struktur und Funktion Beispiel: suche alle Blätter, die Nachfolger des Knotens c sind, und summiere deren Fläche query Ergebnis kann übergeben werden an imperative Berechnung transitive Hüllenbildung Aggregationsoperator
28
Query in einem Pflanzen- / Tier-Modell:
p:Plant, (* a:Animal, (distance(a,p) < p[radius]) *)
29
Query in einem Pflanzen- / Tier-Modell:
p:Plant, (* a:Animal, (distance(a,p) < p[radius]) *) sucht alle Tiere innerhalb des Radius von p
30
Die Software GroIMP http://www.grogra.de
dort auch Link auf die Download-Seite und Beispiele-Galerie. Siehe auch Lerneinheiten zu GroIMP (Autor: K. Petersen, M.Sc. Forst., Sommersem. 2009). GroIMP ist ein Open-Source-Projekt!
31
GroIMP (Growth-grammar related Interactive Modelling Platform)
32
GroIMP ist eine Kombination von:
- XL-Compiler und -Interpreter - Entwicklungsumgebung für XL - 3D-Modeller (interaktiv) - 3D-Renderer (mehrere Varianten) - 2D-Graphen-Visualisierer Editor für 3D-Objekte und Attribute Texturerzeugungswerkzeug Display für dtd-Dateien Lichtsimulationswerkzeug
33
Beispiel eines mit GroIMP realisierten Pflanzenmodells (Gerste):
34
Anwendungsbeispiel: Modellierung von Parklandschaften
(Rogge & Moschner 2007, für Stiftung Branitzer Park, Cottbus) mit GroIMP generierte Erle in VRML-Welt
35
Ergebnisse aus Architektur-Seminar mit XL:
Liang 2007
37
Jarchow 2007
39
virtuelle Landschaft (mit Buchen-Fichten-Mischbestand)
41
weitere Beispiele für Struktur-Funktions-Modelle von Pflanzen, mit GroIMP realisiert:
42
GroIMP: neuere Erweiterungen
„Supershape“ (Klasse von math. definierten Oberflächen) als geometrische Primitivobjekte
43
GroIMP: neuere Erweiterungen Raten-Zuweisungsoperator:
Möglichkeit, effiziente und numerisch stabile Lösungsverfahren für gewöhnliche Differentialgleichungen auf einfache Weise im Modellcode aufzurufen (Hemmerling 2012) Example:
44
GroIMP: neuere Erweiterungen
verbesserte OpenGL-3D-Ansicht zur Visualisierung (Hartmann, Hemmerling 2010)
45
GroIMP: neuere Erweiterungen
integriertes Werkzeug für die Erzeugung von „Billboard-Objekten“ zur schnellen Vegetations- darstellung (Hemmerling 2010)
46
GroIMP: neuere Erweiterungen integrierter virtueller Laserscanner
(realisiert mit Ecole Centrale Paris, Praktikumsarbeit eines Studenten) (Etard 2011)
47
Modellierung von Licht / Beschattung
erster Modellansatz (stark vereinfachend): Beschattung eines Objekts liegt dann vor, wenn sich in einem gedachten Kegel mit Spitze im Objekt, geöffnet nach oben (z-Richtung), noch andere Objekte befinden. Beispiel: sm09_b42.rgg Lichtkonkurrenz dreier 2-dimensionaler Modellpflanzen
48
module Segment(int t, int ord) extends F0;
module TBud(int t) extends F(1, 1, 1); module LBud extends F(0.5, 0.5, 1); Vector3d z = new Vector3d(0, 0, 1); protected void init() [ Axiom ==> P(2) D(5) V(-0.15) [ TBud(-4) ] RU(90) M(600) RU(-90) [ TBud(0) ] RU(-90) M(1200) RU(90) [ TBud(-8) ]; ] public void run() TBud(t), (t < 0) ==> TBud(t+1); x:TBud(t), (t >= 0 && empty( (* s:Segment, (s in cone(x, z, 45)) *) ) ) ==> L(random(80, 120)) Segment(0, 0) [ MRel(random(0.5, 0.9)) RU(60) LBud ] [ MRel(random(0.5, 0.9)) RU(-60) LBud ] TBud(t+1); y:LBud, (empty( (* s:Segment, (s in cone(y, z, 45)) *) ) ) ==> L(random(60, 90) Segment(0, 1) RV0 LBud; Segment(t, o), (t < 8) ==> Segment(t+1, o); Segment(t, o), (t >= 8 && o == 1) ==>> ; /* Entfernen des ganzen Astes */
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.