slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2012 - Winfried Kurth PowerPoint Presentation
Download Presentation
Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2012 - Winfried Kurth

Loading in 2 Seconds...

play fullscreen
1 / 32

Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2012 - Winfried Kurth - PowerPoint PPT Presentation


  • 106 Views
  • Uploaded on

Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2012 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 8. Vorlesung: 21. 6. 2012. zuletzt: Ersetzungsregeln in relationalen Wachstumsgrammatiken

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2012 - Winfried Kurth' - bona


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Struktur-Funktions-Modelle von Pflanzen

- Sommersemester 2012 -

Winfried Kurth

Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik

8. Vorlesung: 21. 6. 2012

slide2

zuletzt:

  • Ersetzungsregeln in relationalen Wachstumsgrammatiken
  • zwei Typen von Ersetzungsregeln: L-System- und SPO-Regeln
  • Fichtenmodell
  • dtd-Codierung
slide3

als nächstes:

  • Fichtenmodell (Lösungen der Hausaufgabe)
  • ein weiterer Regeltyp: Aktualisierungsregeln
  • die Programmiersprache XL: wichtige Eigenschaften
  • Darstellung von Graphen in XL
slide4

Fichtenmodell in XL (vgl. letzte Vorlesung)

/* Fichtenmodell sm09_fichte.rgg, W.K. 11. 6. 2009 */

module T; /* terminale Knospe */

module M1; /* Seitenzweigknospe 1. Ordn., mediale Position */

module S1; /* Seitenzweigknospe 1. Ordn., subapikale Pos. */

module M2; /* Seitenzweigknospe 2. Ordn., mediale Pos. */

module S2;

module M3;

module S3;

module GU(float incd, int age) extends F0; /* growth unit */

module BA(int age, super.angle) extends RL(angle);

module GA(int age, super.angle) extends RL(angle);

module HA(int age, super.angle) extends RL(angle);

const int ang = 45;

const int x3 = 50;

const int[] a = { 0, 15, 25, 32, 37, 40 };

const int[] gg = { 0, 0, 4 };

const int[] hh = { 0, 0, 2, 4, 8 };

int n, k;

const float[] prob_n = {0.1, 0.4, 0.3, 0.2};

const int[] n_subap = {5, 6, 7, 8};

slide5

protected void init()

[

Axiom ==> P(2) D(1) L(100) T;

]

public void grow()

[

x:T ==> Nl(80*TurtleState.length(x)) GU(2.2, 0)

RH(random(0, 360)) { k = 0; }

for ((1:3)) /* 3 mediale Seitenäste 1. Ordnung */

( [ MRel(random(0.2, 0.85)) RH(k*120+normal(0, 5.5))

{ k++; } RL(x3+normal(0, 2.2)) BA(0, 0) LMul(0.4) M1 ] )

RH(random(0, 360)) { n = n_subap[distribution(prob_n)]; k = 0; }

for ((1:n)) /* n subapikale Seitenäste 1. Ordnung */

( [ MRel(random(0.85, 1)) RH(k*360/n+normal(0, 3.1))

{ k++; } RL(x3+normal(0, 2.2)) BA(0, 0) LMul(0.65) S1 ] )

T;

x:S1 ==> Nl(80*TurtleState.length(x)) GU(1.3, 0)

[ MRel(random(0.85, 1)) RH(15)

RU(ang+normal(0, 2.2)) AdjustLU LMul(0.7) S2 ]

[ MRel(random(0.85, 1)) RH(-15)

RU(-ang+normal(0, 2.2)) AdjustLU LMul(0.7) S2 ] GA(0, 0) S1;

x:M1 ==> Nl(80*TurtleState.length(x)) GU(0.8, 0)

[ MRel(random(0.85, 1)) RH(15)

RU(ang+normal(0, 2.2)) AdjustLU LMul(0.7) M2 ]

[ MRel(random(0.85, 1)) RH(-15)

RU(-ang+normal(0, 2.2)) AdjustLU LMul(0.7) M2 ] HA(0, 0) M1;

slide6

x:S2 ==> Nl(80*TurtleState.length(x)) GU(1.3, 0)

[ MRel(random(0.85, 1)) RH(10)

RU(ang) AdjustLU LMul(0.7) S3 ]

[ MRel(random(0.85, 1)) RH(-10)

RU(-ang) AdjustLU LMul(0.7) S3 ] S2;

x:M2 ==> Nl(80*TurtleState.length(x)) GU(0.8, 0)

[ MRel(random(0.85, 1)) RH(10)

RU(ang) AdjustLU LMul(0.7) M3 ]

[ MRel(random(0.85, 1)) RH(-10)

RU(-ang) AdjustLU LMul(0.7) M3 ] M2;

x:S3 ==> Nl(80*TurtleState.length(x)) GU(1.3, 0);

x:M3 ==> Nl(80*TurtleState.length(x)) GU(0.8, 0);

GU(incd, t) ==> DlAdd(incd*(t+1)) GU(incd, t+1);

DlAdd(arg) ==> ;

BA(age, angle) ==> BA(age+1, a[age<5 ? age+1 : 5]);

GA(age, angle) ==> GA(age+1, gg[age<2 ? age+1 : 2]);

HA(age, angle) ==> HA(age+1, hh[age<4 ? age+1 : 4]);

]

slide7

- was ist unklar?

- wie lässt sich das Dickenwachstum verstärken

- für alle Wachstumseinheiten (growth units, GU)?

- nur für den Stamm?

- wie lässt sich (durch Veränderung des Längenwachstums)

eine schlankere Kronenform erreichen?

- wie lässt sich die Zahl der Haupt-Seitenäste vermindern?

slide8

Die Sprache XL

„eXtended L-system language“

Einordnung in die Programmierparadigmen:

imperativ

objektorientiert

regelbasiert

Java

XL

slide9

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 verständlicher

Regelschreibweise

imperative Blöcke, ähnlich wie in Java: { ... }

regelorientierte Blöcke (RGG-Teil): [ ... ]

slide10

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

slide11

Eigenschaften der Sprache XL:

● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte

slide12

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);

]

slide13

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“)

slide14

Eigenschaften der Sprache XL:

● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte

Spezielle Knoten:

Geometrieobjekte

Box, Sphere, Cylinder, Cone, Frustum, Parallelogram...

slide15

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)

slide16

Zugriff auf Knotenattribute:

Beispiel sm09_b26.rgg

slide17

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, ...

slide18

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

slide19

Eigenschaften der Sprache XL:

● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte

● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung

durch Kontrollstrukturen

slide20

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 ] );

slide21

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

slide22

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)

slide23

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);

slide24

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)

slide25

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)

slide26

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

slide27

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

slide28

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“)

slide29

Darstellung von Graphen in XL

● 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 in einem Graphen:

-Kantenbezeichner->, <-Kantenbezeichner-

● Spezielle Kantentypen:

Nachfolgerkante: -successor->, > oder (Leerstelle)

Verzweigungskante: -branch->, +> oder [

Verfeinerungskante: />

slide30

Notationen für spezielle Kantentypen

> Nachfolgerkante vorwärts

< Nachfolgerkante rückwärts

--- Nachfolgerkante vorwärts oder rückwärts

+> Verzweigungskante vorwärts

<+ Verzweigungskante rückwärts

-+- Verzweigungskante vorwärts oder rückwärts

/> Verfeinerungskante vorwärts

</ Verfeinerungskante rückwärts

--> beliebige Kante vorwärts

<-- beliebige Kante rückwärts

-- beliebige Kante vorwärts oder rückwärts

(vgl. Kniemeyer 2008, S. 150 und 403)

slide31

selbstdefinierte Kantentypen

const int xxx = EDGE_0; // oder EDGE_1, ..., EDGE_14

...

Verwendung im Graphen: -xxx->, <-xxx-, -xxx-

slide32

Hausaufgabe zum 28. 6.:

Lesen Sie die Abschnitte 3.1 bis 3.13 (S. 17-33) aus der Dissertation von Ole Kniemeyer (http://nbn-resolving.de/urn/resolver.pl?urn=urn:nbn:de:kobv:co1-opus-5937)