Imperativer Code (Forts.), Projekte in GroIMP, stochastische L

Werbung
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.
Herunterladen