Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2014 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 5. Vorlesung: 5. 6. 2014 letztes Mal: • einfache Verzweigungsmuster, modelliert mit L-Systemen • weitere L-System-Beispiele • Verwendung von imperativem Code in XL-Programmen als nächstes: • Verwendung von Schleifen und Arrays bei Verzweigungs-Konstruktionen • konditionale Regelanwendung (Beispiele) • Farben setzen in XL • Einbau von Texturen in Pflanzenmodelle • Anlegen eines Projekts in GroIMP • stochastische L-Systeme • ein einfaches statisches Pflanzenmodell mit GroIMP Schachtelung von regelbasiertem und imperativem Code in XL Schachtelung von regelbasiertem und imperativem Code in XL Beachten Sie die unterschiedliche Syntax von Kontrollstrukturen im imperativen und im regelbasierten Teil von XL: imperativ: { // ... for (int i = 1; i <= 42; i++) { x[i] = 3*i + 1; } } regelbasiert: [ ] A(x) ==> for (int i = 1; i <= 7; i++) ( RU(15) F(x) ); (ebenso bei if ( ... ) ) 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) ] ); ] Beispiel für Verwendung von Arrays zur Steuerung von Längen und Winkeln: sm09_b20.rgg 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 Farben setzen in XL Erweiterung zum Beispiel sm09_b07.rgg (farbige KochKurve) mit eingefügtem imperativen Code: sm09_b07a.rgg Weitergabe von Informationen (hier: Farbe) an Nachfolgeobjekte 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... Beispiel mit Baum-Foto als Textur für das Rechteck: 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 mitgespeichert. Projektdatei hat Namensendung .gsz (lesbar mit Datenkompressionsprogrammen wie z.B. WinZIP) Beispiel: sm09_b10.gsz Verwendung einer Blatt-Textur Stochastische L-Systeme Verwendung von Pseudozufallszahlen Beispiel: deterministisch stochastisch Axiom ==> L(100) D(5) A; Axiom ==> L(100) D(5) A; A ==> F0 LMul(0.7) DMul(0.7) [ RU(50) A ] [ RU(-10) 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: 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. (folgendes Kapitel übernommen von Dr. Katarína Streit, 2013) Hausaufgaben zum nächsten Mal: • Farnmodell • Bearbeiten Sie im ILIAS-Lernmodul „Einführung in GroIMP“ (verfügbar über StudIP) die Lektionen 5 – 12.