Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

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

Ähnliche Präsentationen


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

1 Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2010 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 4. Vorlesung: 27. 4. 2010

2 letztes Mal: einfache L-Systeme (Zeichenkettenersetzungssysteme) ihre Ausführung mit GroIMP einfache Verzweigungsmuster, modelliert mit L-Systemen

3 als nächstes: weitere L-System-Beispiele Verwendung von imperativem Code in XL-Programmen konditionale Regelanwendung Einbau von Texturen in Pflanzenmodelle Anlegen eines Projekts in GroIMP

4 Welche Struktur wird von folgendem parametrischem L- System erzeugt? Axiom ==> [ RU(90) M(1) RU(90) A(1) ] A(1); A(n) ==> F(n) RU(90) A(n+1); Variante: in der zweiten Regel " RU(90) " etwa durch " RU(92) " ersetzen.

5 Testen Sie die Beispiele sm09_b04.rgg Zwei Regelblöcke sm09_b05.rgg wechselständiges Wachstum sm09_b06.rgg gegenständiges Wachstum sm09_b07.rgg Farbgebung für einzelne Elemente durch imperativen Code sm09_b08.rgg Verwendung eigener Module sm09_b21.rgg Seitenzweig-Positionierung

6 Verwendung von imperativem Code in XL-Programmen Befehle wie Zuweisungen von Werten zu Variablen, Additionen, Funktionsausführungen, Ausgabe (Druckbefehle) usw. werden mit der gleichen Schreibweise wie in der Programmiersprache Java angegeben und in geschweifte Klammern {... } eingeschlossen. Beispiele: int i; // Deklaration einer ganzzahligen Variablen mit Namen i float a = 0.0; // Deklaration u. Initialisierung einer Gleitkomma-Var. int[] x = new int[20]; // Deklaration eines Arrays (Datenfeldes) // der Länge 20; Zugriff: x[0],..., x[19] float[] y = { 0.1, 0.2, 0.7, -1.4 }; // Deklaration und Initialisierung eines Arrays i = 25; // Zuweisung

7 Verwendung von imperativem Code (Fortsetzung) i++; // i wird um 1 erhöht i--; // i wird um 1 vermindert i += 5; // i wird um 5 erhöht i -= 5; // i wird um 5 vermindert i *= 2; // i wird verdoppelt i /= 3; // i wird gedrittelt n = m % a; // n wird der Rest von m bei ganzzahl. Division durch a zugew. x = Math.sqrt(2); // x wird die Quadratwurzel aus 2 zugewiesen if (x != 0) { y = 1/x; } // bedingte Zuweisung von 1/x an y while (i <= 10) { i++; } // Schleife: solange i 10 ist, // wird i um 1 erhöht for (i = 0; i < 100; i++) { x[i] = 2*i; } // imperative // for-Schleife if (i == 0) {... } // Test auf Gleichheit ( = wäre Zuweisung!)

8 Datentypen: int ganze Zahlen float Gleitkommazahlen double Gleitkommazahlen, doppelte Präzision char Zeichen (characters) void leerer Typ (für Funktionen, die nichts zurückgeben) mathematische Konstanten: Math.PI Math.E e logische Operatoren: && und || oder ! nicht

9 mathematische Funktionen: Math.abs Absolutbetrag Math.sqrt Quadratwurzel Math.acos Arcuscosinus Math.tan Tangens Math.asin Arcussinus Math.toDegrees Math.atan Arcustangens Math.toRadians Math.cos CosinusUmrechung Gradmaß Math.exp Exponentialfunktion e x Bogenmaß Math.log natürlicher Logarithmus Math.max Maximum zweier Zahlen Math.min Minimum zweier Zahlen Math.round Rundungsfunktion Math.sin Sinus

10 sm_progbsp01.rgg : schreibt die Zahlen von 1 bis 10 auf die GroIMP-Konsole protected void init() { int i; for (i=1; i<= 10; i++) println(i); println("Ende."); }

11 sm_progbsp02.rgg : schreibt ungerade Quadratzahlen protected void init() { int a, b; for (a = 1; a <= 10; a++) { b = a*a; if (b % 2 != 0) println(b); } println("Ende."); }

12 sm_progbsp03.rgg : schreibt die Fibonacci-Zahlen protected void init() { int i; int[] fibo = new int[20]; /* Array-Deklaration */ fibo[0] = fibo[1] = 1; for (i=2; i <= 19; i++) fibo[i] = fibo[i-1] + fibo[i-2]; for (i=0; i <= 19; i++) println(fibo[i]); println("Ende."); }

13 sm_progbsp04.rgg : Verwendung einer Funktion /* ein einfaches imperatives Programm: Eine selbstgeschriebene Funktion berechnet x 2 + 1; diese wird für x von 0 bis 1 in 0.1-Schritten ausgewertet. Man achte auf Rundungsfehler und auf die richtige Obergrenze für x. */ public float funktion(float x) { return x*x + 1; } protected void init() { float a = 0.0; /* Gleitkommazahl */ while (a <= 1.00001) { println(funktion(a)); /* wende Funktion an und gib aus */ a += 0.1; /* inkrementiere a */ } println("Ende."); }

14 Man teste die Beispiele sm09_b20.rgg Verwendung von Arrays sm09_b22.rgg for-Schleife für Seitenzweige

15 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. wenn Shader-Fenster noch nicht geöffnet: Panels Explorers 3D Shaders 6. Im geöffneten Shader-Fenster dann: Object New Lambert 7. Namen Lambert zweimal anklicken (mit Pause), überschreiben mit dem Namen, der im Programm vorgesehen ist (Argument der Funktion shader(...) ), abschließen mit

16 Projekt anlegen (Fortsetzung) 8. Doppelklicken auf Kugel-Icon Attribute Editor öffnet sich 9. dort anklicken: Diffuse colour Surface Maps Image 10. dort anklicken: Image [ ? ] From File 11. Bilddatei auswählen, öffnen 12. Add the file: OK 13. Editor-Datei neu speichern / kompilieren - texturierte Objekte werden nun mit Textur dargestellt 14. Speichern des gesamten Projekts: File Save, Namen des Projekts eingeben (muss nicht mit Namen der RGG-Programmdatei übereinstimmen).


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

Ähnliche Präsentationen


Google-Anzeigen