Struktur-Funktions-Modelle von Pflanzen
Download
1 / 90

Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2011 - Winfried Kurth - PowerPoint PPT Presentation


  • 74 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2011 - Winfried Kurth' - lulu


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

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

(mit Attributen)


Grafisches System:

Objekte

(mit Attributen)

regelmäßige

Strukturen


Grafisches System:

Objekte

(mit Attributen)

regelmäßige

Strukturen

Prozesse



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: unterstützen:

zeichnende Schildkröte, die auf Befehle hört


Turtle: unterstützen:

zeichnende Schildkröte, die auf Befehle hört


F0 unterstützen:


F0 unterstützen:


F0 RU(90) unterstützen:


F0 RU(90) unterstützen:


F0 RU(90) F0 unterstützen:


F0 RU(90) F0 unterstützen:



F0 RU(90) F0 RU(90) LMul(0.5) F0 unterstützen:

(später mehr)


zurück zum Beispiel: unterstützen:

Objekte

(mit Attributen)


Objektorientiertes Paradigma unterstützen:

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, ...


Beispiel: unterstützen:

public class Auto extends Fahrzeug

{

public String marke;

public int plaetze;

public void anzeigen()

{

System.out.println("Das Auto ist ein " + marke);

System.out.println("Es hat " + plaetze + "Sitze.");

}

}

typisch:

Klassen (Auto) mit Daten (marke, plaetze) und Methoden (anzeigen)


Vererbung unterstützen: von Attributen und Methoden von Ober- an Unterklassen

Beispiel:

public class Auto extends Fahrzeug

{

public String marke;

public int plaetze;

public void anzeigen()

{

System.out.println("Das Auto ist ein " + marke);

System.out.println("Es hat " + plaetze + "Sitze.");

}

}

typisch:

Klassen (Auto) mit Daten (marke, plaetze) und Methoden (anzeigen)


Objekthierarchien sind auch in der Biologie sinnvoll unterstützen:

zum Beispiel:

Organ

Blatt

Blüte

Internodium

Wurzelsegment

Laub-

blatt

Nadel

Grob-

WS

Fein-

WS


regel unterstützen:mäßige

Strukturen


Regelbasiertes Paradigma unterstützen:

Computer = Transformationsmaschine für Strukturen

Es gibt eine aktuelle Struktur, die solange transformiert wird, wie dies möglich ist.


Regelbasiertes Paradigma unterstützen:

Computer = Transformationsmaschine für Strukturen

Es gibt eine aktuelle Struktur, die solange transformiert wird, wie dies möglich ist.

Arbeitsprozess: Such- und Anwendungsprozess.matching: Suchen einer passenden Regel,

rewriting: Anwendung der Regel, um die Struktur umzuschreiben.


Regelbasiertes Paradigma unterstützen:

Computer = Transformationsmaschine für Strukturen

Es gibt eine aktuelle Struktur, die solange transformiert wird, wie dies möglich ist.

Arbeitsprozess: Such- und Anwendungsprozess.matching: Suchen einer passenden Regel,

rewriting: Anwendung der Regel, um die Struktur umzuschreiben.

Programm = Menge von Transformationsregeln


Regelbasiertes Paradigma unterstützen:

Computer = Transformationsmaschine für Strukturen

Es gibt eine aktuelle Struktur, die solange transformiert wird, wie dies möglich ist.

Arbeitsprozess: Such- und Anwendungsprozess.matching: Suchen einer passenden Regel,

rewriting: Anwendung der Regel, um die Struktur umzuschreiben.

Programm = Menge von Transformationsregeln

Programmfindung: Spezifikation der Regeln


Regelbasiertes Paradigma unterstützen:

Computer = Transformationsmaschine für Strukturen

Es gibt eine aktuelle Struktur, die solange transformiert wird, wie dies möglich ist.

Arbeitsprozess: Such- und Anwendungsprozess.matching: Suchen einer passenden Regel,

rewriting: Anwendung der Regel, um die Struktur umzuschreiben.

Programm = Menge von Transformationsregeln

Programmfindung: Spezifikation der Regeln

Programmiersprachen: L-System-Sprachen, KI-Sprachen, Prolog, ...


Beispiel: unterstützen: L-Systeme (Lindenmayer-Systeme)

Regelsysteme zur Ersetzung von Zeichenketten

(in Kürze mehr)


ebenfalls regelbasierter Mechanismus: unterstützen:

Graph-Grammatiken


ebenfalls regelbasierter Mechanismus: unterstützen:

Graph-Grammatiken

Regel:


ebenfalls regelbasierter Mechanismus: unterstützen:

Graph-Grammatiken

Regel:

Anwendung:


Zusammenfassung: unterstützen:

Programmierparadigmen


Zusammenfassung: unterstützen:

Programmierparadigmen

● imperativ


Zusammenfassung: unterstützen:

Programmierparadigmen

● imperativ

- Veränderung von Variablen

- Turtle-Geometrie


Zusammenfassung: unterstützen:

Programmierparadigmen

● imperativ

- Veränderung von Variablen

- Turtle-Geometrie

● objektorientiert


Zusammenfassung: unterstützen:

Programmierparadigmen

● imperativ

- Veränderung von Variablen

- Turtle-Geometrie

● objektorientiert

● regelbasiert


Zusammenfassung: unterstützen:

Programmierparadigmen

● imperativ

- Veränderung von Variablen

- Turtle-Geometrie

● objektorientiert

● regelbasiert

- L-Systeme

- Graph-Grammatiken


Zusammenfassung: unterstützen:

Programmierparadigmen

● imperativ

- Veränderung von Variablen

- Turtle-Geometrie

● objektorientiert

● regelbasiert

- L-Systeme

- Graph-Grammatiken

● weitere: funktional; nebenläufig; chemisch ...


Anwendungsschwerpunkte: unterstützen:

prozedural:

Numerik,

z.B. Lösen von Gleichungssystemen

Bsp. Photosynthese; Baumwasserfluss

(Darcy-Gesetz = DGL,  diskretisiert, numerisches Lösungsverfahren)

regelbasiert:

Entwicklung verzweigter Strukturen (lokal 1-D)

Bsp. Pflanzen

logische Abhängigkeiten

Bsp. Wissensbasierte Systeme

objektorientiert:

Ensembles interagierender Objekte

Bsp. Tierindividuen


Synthese: Die Sprache XL unterstützen:

„eXtended L-system language“

Programmiersprache, die parallele Graph-Grammatiken (RGG) einfach verfügbar macht


imperativ unterstützen:

objektorientiert

regelbasiert

Java

XL


Turtle-Geometrie unterstützen:

F0 RU(90) F0 RU(90) LMul(0.5) F0


Turtle geometry unterstützen: ("Schildkrötengeometrie")

befehlsgesteuertes, lokales Navigieren im 2D- oder 3D-Raum (Abelson & diSessa 1982; vgl. Programmier-sprache "LOGO")

"Turtle": Zeichen- oder Konstruktionsgerät (virtuell)

- speichert (grafische und nicht-grafische) Informationen

- mit einem Zustandsspeicher assoziiert (wichtig für Verzweigungen)

- aktueller Zustand der Turtle enthält z.B. Information über aktuelle Liniendicke, Schrittweite, Farbe, weitere Eigenschaften des als nächstes zu konstruierenden Objekts


Befehle (Auswahl): unterstützen:

F0 "Forward", mit Konstruktion eines Elements

(Linienstück, Segment, Gebäudetrakt...),

benutzt wird die aktuelle Schrittweite für die Länge

(die Null steht für "keine explizite Längenfestlegung")

M0 forward ohne Konstruktion (Move-Befehl)

L(x) ändere die aktuelle Schrittweite (Länge) zu x

LAdd(x) inkrementiere die aktuelle Schrittweite um x

LMul(x) multipliziere die aktuelle Schrittweite mit x

D(x), DAdd(x), DMul(x) analog für die aktuelle

Dicke


Wiederholung von Abschnitten der Zeichenkette unterstützen:

möglich mit "for"

z.B. for ((1:3)) ( A B C )

liefert A B C A B C A B C

was ist das Ergebnis der Interpretation von

L(10) for ((1:6))

( F0 RU(90) LMul(0.8) ) ?


L(10) for ((1:6)) unterstützen:

( F0 RU(90) LMul(0.8) )


anderes Beispiel: unterstützen:

for ((1:20))( for ((1:36))

( F0 RU(165) F0 RU(165) ) RU(270) )


anderes Beispiel: unterstützen:

for ((1:20))( for ((1:36))

( F0 RU(165) F0 RU(165) ) RU(270) )


Erweiterung auf 3D-Grafik: unterstützen:

Turtle-Rotationen um 3 Achsen


Erweiterung auf 3D-Grafik: unterstützen:

Turtle-Rotationen um 3 Achsen

left

head

up


Erweiterung auf 3D-Grafik: unterstützen:

Turtle-Rotationen um 3 Achsen

RL

RH

RU


3D-Befehle: unterstützen:

RU(45) Drehung der turtle um die "up"-Achse um 45°

RL(...), RH(...) analog um "left" und "head"-Achse

up-, left- und head-Achse bilden ein rechtwinkliges, räumliches Koordinatensystem, das von der turtle mitgeführt wird

RV(x) Rotation "nach unten" mit durch x vorgegebener Stärke

RG Rotation ganz nach unten (Richtung (0, 0, -1))


Beispiel: unterstützen:

L(100) D(3) RU(-90) F(50) RU(90) M0 RU(90) D(10) F0 F0

D(3) RU(90) F0 F0 RU(90) F(150) RU(90) F(140) RU(90)

M(30) F(30) M(30) F(30) RU(120) M0 Sphere(15)

erzeugt

was ist das Ergebnis der Interpretation der Zeichenkette

L(10) F0 RU(45) F0 RU(45) LMul(0.5) F0 M0 F0?


Verzweigungen: unterstützen:

Realisierung mit Speicher-Befehlen

[ lege aktuellen Zustand auf Speicher

("Ablage", Stack)

] nimm obersten Zustand von der Ablage

und mache diesen zumaktuellen Zustand

(damit: Ende der Verzweigung)


Verzweigungen: unterstützen:

Realisierung mit Speicher-Befehlen

[ lege aktuellen Zustand auf Speicher

("Ablage", Stack)

] nimm obersten Zustand von der Ablage

und mache diesen zumaktuellen Zustand

(damit: Ende der Verzweigung)

F0 [ RU(-20) F0 ] RU(20) DMul(2) F0


Wie man eine Turtle-Befehlsfolge mit GroIMP ausführt unterstützen:

schreiben Sie in eine GroIMP-Projektdatei (oder in eine Datei mit Endung .rgg):

protected void init()

[

Axiom ==>Turtle-Befehlsfolge

]


Beispiel zeichnen eines dreiecks
Beispiel: Zeichnen eines Dreiecks unterstützen:

protected void init()

[ Axiom ==> RU(30) F(10) RU(120) F(10) RU(120) F(10) ]

siehe Dateism09_b01.rgg


Hausaufgabe zum nächsten Mal: unterstützen:

Bearbeiten Sie im ILIAS-Lernmodul „Einführung in GroIMP“ (verfügbar über StudIP):

- Einführung

- Lektionen 1 - 4

- Lektion 23


ad