Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 5. Vorlesung: (3 VL-Std.)
letztes Mal: einfache Verzweigungsmuster, modelliert mit L-Systemen weitere L-System-Beispiele Verwendung von imperativem Code in XL-Programmen konditionale Regelanwendung
als nächstes: Einbau von Texturen in Pflanzenmodelle Anlegen eines Projekts in GroIMP stochastische L-Systeme kontextsensitive L-Systeme
Hausaufgabe vom letzten Mal: sm09_b11.rgg Bedingungen für Regelanwendungen sm09_b12.rgg Bedingungen für Regelanwendungen (2. Variante) sm09_b13.rgg Verknüpfung zweier Bedingungen
Anleitung zum Erstellen eines GroIMP-Projekts mit Texturen aus bereitgestellten Grafikdateien (z.B. Blatt- oder Rindenfotos) 1. File New RGG Project 2. Namen der RGG-Datei (Textdatei) eingeben 3. aus dem GroIMP-Editor das Default-Programm löschen, neues Programm schreiben oder einfügen 4. in Editor speichern (automatische Kompilation muss erfolgreich sein) - texturierte Objekte werden noch vereinfacht dargestellt 5. Panels Explorers 3D Shaders Object New Lambert 6. Namen Lambert zweimal anklicken (mit Pause), überschreiben mit dem Namen, der im Programm vorgesehen ist (Argument der Funktion shader(...) ), abschließen mit 7. Doppelklicken auf Kugel-Icon Attribute Editor öffnet sich 8. dort anklicken: Diffuse colour Surface Maps Image 9. dort anklicken: Image [ ? ] From File
Projekt anlegen (Fortsetzung) 10. Bilddatei auswählen, öffnen 11. Add the file: OK 12. Editor-Datei neu speichern / kompilieren - texturierte Objekte werden nun mit Textur dargestellt 13. Speichern des gesamten Projekts: File Save, Namen des Projekts eingeben (muss nicht mit Namen der RGG-Programmdatei übereinstimmen).
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 ] );
Beispiel: Fichtenmodell in 3D mit L-System erzeugt
XL-Funktionen für Pseudozufallszahlen: Math.random() erzeugt gleichverteilte Gleitkomma- Zufallszahl zwischen 0 und 1 random(a, b) erzeugt gleichverteilte Gleitkomma- Zufallszahl zwischen a und b probability(x) liefert 1 mit Wahrscheinlichkeit x, 0 mit Wahrscheinlichkeit 1–x normal(m, s) erzeugt normalverteilte Gleitkomma- Zufallszahl mit Mittelwert m und Standard- abweichung s Man teste das Beispiel sm09_b19.rgg Stochastisches L-System
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
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.
Kontextsensitivität Abfrage eines Kontexts, der vorhanden sein muss, damit eine Regel anwendbar ist Angabe des Kontexts in (*.... *) Beispiel: 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
Man teste die Beispiele sm09_b14.rgg Verwendung eines linken Kontexts sm09_b15.rgg Verwendung eines rechten Kontexts
Hausaufgaben zum nächsten Mal: 1. Bearbeiten Sie im ILIAS-Lernmodul Einführung in GroIMP (verfügbar über StudIP): - die Lektionen Lesen Sie Chapter 1, Section 1.8 im Buch The Algorithmic Beauty of Plants von P. Prusinkiewicz und A. Lindenmayer (= S ). (Beachten Sie die abweichende Notation für kontextsensitive Regeln.)