Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2015 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.

Ähnliche Präsentationen


Präsentation zum Thema: "Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2015 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik."—  Präsentation transkript:

1 Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2015 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 5. Vorlesung: 11. 6. 2015

2 letztes Mal: einfache Verzweigungsmuster, modelliert mit L-Systemen weitere L-System-Beispiele Verwendung von imperativem Code in XL-Programmen

3 als nächstes: Verwendung von Schleifen und Arrays bei Verzweigungs-Konstruktionen konditionale Regelanwendung (Beispiele) Einbau von Texturen in Pflanzenmodelle Anlegen eines Projekts in GroIMP stochastische L-Systeme kontextsensitive L-Systeme ein neuer Regeltyp: Interpretationsregeln

4 Beispiel für eine for -Schleife für Seitenzweige: sm09_b22.rgg protected void init() [ Axiom ==> F(10); ] public void seitenzweig() [ F(x) ==> F(x) L(x) for (int i=1; i<=5; i++) ( [ MRel(0.1*i+0.2) RU((-1**i)*30) F(x*0.2) ] ); ]

5 Beispiel für Verwendung von Arrays zur Steuerung von Längen und Winkeln: sm09_b20.rgg //... const float[] laenge = { 1, 1, 0.5, 0.2}; const float[] winkel = {40, 50, 80, 100 }; public void run1() [ a:A, (a[ordnung] F(laenge[a[ordnung]]) [ RU( winkel[a[ordnung]]) RH(90) A(a[ordnung]+1) ] [ RU(-winkel[a[ordnung]]) RH(90) A(a[ordnung]+1) ]; ]

6 Konditionale L-System-Regeln in XL linke_Regelseite, ( Bedingung ) ==> rechte_Regelseite Beispiele: sm09_b11.rgg Bedingungen für Regelanwendungen sm09_b12.rgg Bedingungen für Regelanwendungen (2. Variante) sm09_b13.rgg Verknüpfung zweier Bedingungen

7 Farben setzen in XL (Zusammenfassung)

8 Texturen Texturen sind 2-dimensionale Muster, die anstelle von Farben auf Oberflächen aufgetragen werden, um einen realistischeren Eindruck der Beschaffenheit von Objektoberflächen zu erhalten. Quellen für Texturen: Fotos, Scans von Objekten, Bilddatenbanken im Internet, künstlich erzeugte Muster...

9

10 Beispiel mit Baum-Foto als Textur für das Rechteck:

11 zu beachten bei Anlegen des Projekts: Editor-Datei nach der Auswahl der Bilddatei neu speichern / kompilieren - texturierte Objekte werden nun mit Textur dargestellt Speichern des gesamten Projekts: File  Save, Namen des Projekts eingeben (muss nicht mit Namen der RGG-Programmdatei übereinstimmen). Bilddatei wird mit- gespeichert. Projektdatei hat Namensendung.gsz (lesbar mit Datenkompressionsprogrammen wie z.B. WinZIP) Beispiel: sm09_b10.gsz Verwendung einer Blatt-Textur

12 Stochastische L-Systeme Verwendung von Pseudozufallszahlen Beispiel: deterministisch stochastisch Axiom ==> L(100) D(5) A; A ==> F0 LMul(0.7) DMul(0.7) [ RU(50) A ] [ RU(-10) A ]; 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 ] );

13 Beispiel: Fichtenmodell in 3D mit L-System erzeugt

14 XL-Funktionen für Pseudozufallszahlen: Man teste das Beispiel sm09_b19.rgg Stochastisches L-System

15 Erzeugung einer Zufallsverteilung in der Ebene: Axiom ==> D(0.5) for ((1:300)) ( [ Translate(random(0, 100), random(0, 100), 0) F(random(5, 30)) ] ); Ansicht von oben schräg von der Seite

16 Man teste die Beispiele sm09_b23.rgg Verbreitungsmodell (1 Art) sm09_b24.rgg Verbreitungsmodell (2 Arten) In diesen Beispielen wird die Konkurrenz noch nicht berücksichtigt. Es wird gezeigt, wie Populationsstärken in Charts während der Laufzeit der Simulation ausgeplottet werden können.

17 Kontextsensitive L-Systeme Abfrage eines Kontexts, der vorhanden sein muss, damit eine Regel anwendbar ist in XL: Angabe des Kontexts in (*.... *)

18 Kontextsensitive L-Systeme Beispiel für Verwendung von linkem Kontext: weiteres Beispiel: sm09_b14.rgg linker Kontext

19 Kontextsensitive L-Systeme Beispiel für Verwendung von rechtem Kontext: weiteres Beispiel: sm09_b15.rgg rechter Kontext

20 rechter Kontext; Einbau in ein Modell zur signalgesteuerten Auslösung des Austriebs von Seitentrieben module A(int age); module B(super.length, super.color) extends F(length, 3, color); Axiom ==> A(0); A(t), (t B(10, 2) A(t+1); // 2 = grün A(t), (t == 5) ==> B(10, 4); // 4 = rot B(s, 2) (* B(r, 4) *) ==> B(s, 4); B(s, 4) ==> B(s, 3) [ RH(random(0, 360)) RU(30) F(30, 1, 14) ]; // 3 = blau

21 Einschub:

22 Interpretationsregeln Einbau einer weiteren Regelanwendung unmittelbar vor der grafischen Interpretation (ohne Wirkung auf die nächste Generation) Interpretationsregel- Anwendung Turtle-Interpretation

23 gewöhnliche geometrische Interpretation (ohne Interpretationsregeln):

24 mit Verwendung von Interpretationsregeln:

25 weiteres Beispiel: module MainBud(int x) extends Sphere(3) {{setShader(GREEN);}}; module LBud extends Sphere(2) {{setShader(RED);}}; module LMeris; module AMeris; module Flower; const float d = 30; const float crit_dist = 21; protected void init() [ Axiom ==> MainBud(10); ] public void run() { [ MainBud(x) ==> F(20, 2, 15) if (x > 0) ( RH(180) [ LMeris ] MainBud(x-1) ) else ( AMeris ); LMeris ==> RU(random(50, 70)) F(random(15, 18), 2, 14) LBud; LBud ==> RL(90) [ Flower ]; AMeris ==> Scale(1.5) RL(90) Flower; /* Flower: hier nur ein Symbol */ ] applyInterpretation(); /* Aufruf der Interpretationsregelausfuehrung (im imperativen Teil {... } !) */ } protected void interpret() /* Block mit Interpretationsregeln */ [ Flower ==> RH(30) for ((1:5)) ( RH(72) [ RL(80) F(8, 1, 9) ] ); ]

26 public void run() { [ Axiom ==> A; A ==> Scale(0.3333) for (int i:(-1:1)) for (int j:(-1:1)) if ((i+1)*(j+1) != 1) ( [ Translate(i, j, 0) A ] ); ] applyInterpretation(); } public void interpret() [ A ==> Box; ] weiteres Beispiel: erzeugt den sogenannten „Menger-Schwamm“ (ein Fraktal)

27 public void run() { [ Axiom ==> A; A ==> Scale(0.3333) for (int i:(-1:1)) for (int j:(-1:1)) if ((i+1)*(j+1) != 1) ( [ Translate(i, j, 0) A ] ); ] applyInterpretation(); } public void interpret() [ A ==> Box; ] (a) (b)(c) A ==> Sphere(0.5); A ==> Box(0.1, 0.5, 0.1) Translate(0.1, 0.25, 0) Sphere(0.2);

28 was wird durch dieses Beispiel erzeugt? public void run() { [ Axiom ==> [ A(0, 0.5) D(0.7) F(60) ] A(0, 6) F(100); A(t, speed) ==> A(t+1, speed); ] applyInterpretation(); } public void interpret() [ A(t, speed) ==> RU(speed*t); ]

29 Hausaufgabe zum nächsten Mal: Bearbeiten Sie im ILIAS-Lernmodul „Einführung in GroIMP“ (verfügbar über StudIP) die Lektionen 5 – 12.


Herunterladen ppt "Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2015 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik."

Ähnliche Präsentationen


Google-Anzeigen