900 likes | 994 Views
Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2011 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 2. Vorlesung: 21. 4. 2011. letztes Mal: Modelldreieck für Pflanzenmodelle reine Strukturmodelle, Motivation
E N D
Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2011 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 2. Vorlesung: 21. 4. 2011
letztes Mal: • Modelldreieck für Pflanzenmodelle • reine Strukturmodelle, Motivation • 3 Ebenen der Strukturbeschreibung • 2 Arten der statischen Beschreibung • - tabellarisch (dtd-Format) • - imperativ (turtle geometry) (noch nicht behandelt) • Einstieg in die Software GroIMP
heute: • Laden von dtd-Dateien • erste Analysen von Verzweigungssystemen • Programmierparadigmen • Turtle-Geometrie • Ausführung von Turtle-Geometrie-Befehlsfolgen • mit GroIMP
Laden von dtd-Dateien in GroIMP • in der Version 1.2 nur über dummy-Datei möglich • File / Open: dummy.rgg (öffnen) • Objects / Insert File: dtd-Datei wählen (öffnen) • ggf. Kameraeinstellungen ändern
Einfache Analysen • einige Möglichkeiten wurden aus der Vorgängersoftware GROGRA übernommen • Panels / RGG Panels / GROGRA functions / Analysis • dort: • - list of all shoots (erzeugt komplette Liste) • - elementary analysis • - basic tree parameters • - topological analysis (später mehr)
Paradigmen der Programmierung Der Begriff "Programmierparadigma" Paradigma: grundlegende Denkweise, beispielorientierte Vorstellung
Paradigma: "Beschreibt eine Menge von Theorien, Standards und Methoden, die gemeinsam einen Weg repräsentieren, Wissen zu organisieren" Thomas Kuhn 1970: The Structure of Scientific Revolutions
Paradigma: "Beschreibt eine Menge von Theorien, Standards und Methoden, die gemeinsam einen Weg repräsentieren, Wissen zu organisieren" Thomas Kuhn 1970: The Structure of Scientific Revolutions Paradigmenwechsel: schwierig. Revolution im Denken!
wurde aufgegriffen von Robert Floyd 1978: Turing Award Lecture "The Paradigms of Programming" Robert W. Floyd (1936-2001)
Welche Paradigmen werden nahegelegt durch Probleme... ... bei der Simulation natürlicher Objekte ? ... bei deren computergrafischer Darstellung ?
Ökologie: Organismen
Ökologie: Organismen Aufbau beschreiben
Ökologie: Verhalten (unter bestimmten Bedingungen) Organismen Aufbau beschreiben
Ökologie: Verhalten (unter bestimmten Bedingungen) Organismen Aufbau beschreiben Gesetzmäßigkeiten (Regeln) bestimmen
Ökologie: Verhalten (unter bestimmten Bedingungen) Organismen Aufbau beschreiben Prozesse Gesetzmäßigkeiten (Regeln) bestimmen
Ökologie: Verhalten (unter bestimmten Bedingungen) Organismen Aufbau beschreiben Prozesse Gesetzmäßigkeiten (Regeln) bestimmen Ablauf berechnen
Grafisches System: Objekte
Grafisches System: Objekte (mit Attributen)
Grafisches System: Objekte (mit Attributen) regelmäßige Strukturen
Grafisches System: Objekte (mit Attributen) regelmäßige Strukturen Prozesse
Einige wichtige Programmierparadigmen • für numerische Simulation von Prozessen: • imperatives Paradigma
Einige wichtige Programmierparadigmen • für numerische Simulation von Prozessen: • imperatives Paradigma • (auch: von-Neumann-Paradigma, • Kontrollfluss-Paradigma) John von Neumann (1903-1957)
imperativ: "Befehls-Programmierung" Computer = ?
"Befehls-Programmierung" Computer = Maschine zur Veränderung von Variablen-werten.
"Befehls-Programmierung" Computer = Maschine zur Veränderung von Variablen-werten (diese Veränderungen können Seiteneffekte haben).
"Befehls-Programmierung" Computer = Maschine zur Veränderung von Variablen-werten. Programm = ?
"Befehls-Programmierung" Computer = Maschine zur Veränderung von Variablen-werten. Programm = Plan für den Berechnungsprozess mit Angabe der Befehle und des Kontrollflusses (z.B. Schleifen).
"Befehls-Programmierung" Computer = Maschine zur Veränderung von Variablen-werten. Programm = Plan für den Berechnungsprozess mit Angabe der Befehle und des Kontrollflusses (z.B. Schleifen). Programmfindung: ?
"Befehls-Programmierung" Computer = Maschine zur Veränderung von Variablen-werten. Programm = Plan für den Berechnungsprozess mit Angabe der Befehle und des Kontrollflusses (z.B. Schleifen). Programmfindung: Elementare Einzelschritte finden und in passende, flexible Reihenfolge bringen.
"Befehls-Programmierung" Computer = Maschine zur Veränderung von Variablen-werten. Programm = Plan für den Berechnungsprozess mit Angabe der Befehle und des Kontrollflusses (z.B. Schleifen). Programmfindung: Elementare Einzelschritte finden und in passende, flexible Reihenfolge bringen. Programmiersprachen, die dieses Paradigma unterstützen: Fortran, Pascal, C, ..., Teile von Java, ...
Beispiel: x = 0; while (x < 100) x = x + 1; Inhalt der Variable x wird verändert Schleife legt Kontrollfluss fest
Beispiel: x = 0; while (x < 100) x = x + 1; Inhalt der Variable x wird verändert Schleife legt Kontrollfluss fest Beachte: "=" steht hier nicht für math. Gleichheit, sondern für Zuweisung (prozesshaft)!
Nachteil des imperativen Paradigmas: simultane, parallele Zuweisung wird nicht unterstützt
Nachteil des imperativen Paradigmas: simultane, parallele Zuweisung wird nicht unterstützt Beispiel (Floyd 1978): Räuber-Beute-System, beschrieben durch Rneu = f(R, B), Bneu = g(R, B) Anfängerfehler beim Programmieren: for (i = ... ) { R = f(R, B); B = g(R, B); }
Nachteil des imperativen Paradigmas: simultane, parallele Zuweisung wird nicht unterstützt Beispiel (Floyd 1978): Räuber-Beute-System, beschrieben durch Rneu = f(R, B), Bneu = g(R, B) Anfängerfehler beim Programmieren: for (i = ... ) { R = f(R, B); B = g(R, B); }
Programmiersprachen, die das imperative Paradigma unterstützen: Fortran, Pascal, C, ..., Teile von Java, Befehlssprache der Turtle-Geometrie
Turtle: zeichnende Schildkröte, die auf Befehle hört
Turtle: zeichnende Schildkröte, die auf Befehle hört
F0 RU(90) F0 RU(90) LMul(0.5) F0 (später mehr)
zurück zum Beispiel: Objekte (mit Attributen)
Objektorientiertes Paradigma Computer = Umgebung für virtuelle Objekte Programm = Auflistung von (Objekt-) Klassen, d.h. allgemeiner Spezifikationen von Objekten, die zur Laufzeit des Programms (ggf. mehrfach) erschaffen und wieder vernichtet werden können und miteinander kommunizieren. Programmfindung: Spezifikation der Klassen (Daten und Methoden), die Objektstruktur und -verhalten festlegen. Programmiersprachen: Smalltalk, Simula, C++, Java, ...