Struktur-Funktions-Modelle von Pflanzen
Sponsored Links
This presentation is the property of its rightful owner.
1 / 90

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


  • 55 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2011 - Winfried Kurth

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:


Ö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:


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


F0


F0 RU(90)


F0 RU(90)


F0 RU(90) F0


F0 RU(90) F0


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


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


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)


Vererbung 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

zum Beispiel:

Organ

Blatt

Blüte

Internodium

Wurzelsegment

Laub-

blatt

Nadel

Grob-

WS

Fein-

WS


regelmäßige

Strukturen


Regelbasiertes Paradigma

Computer = Transformationsmaschine für Strukturen

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


Regelbasiertes Paradigma

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

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

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

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: L-Systeme (Lindenmayer-Systeme)

Regelsysteme zur Ersetzung von Zeichenketten

(in Kürze mehr)


ebenfalls regelbasierter Mechanismus:

Graph-Grammatiken


ebenfalls regelbasierter Mechanismus:

Graph-Grammatiken

Regel:


ebenfalls regelbasierter Mechanismus:

Graph-Grammatiken

Regel:

Anwendung:


Zusammenfassung:

Programmierparadigmen


Zusammenfassung:

Programmierparadigmen

● imperativ


Zusammenfassung:

Programmierparadigmen

● imperativ

- Veränderung von Variablen

- Turtle-Geometrie


Zusammenfassung:

Programmierparadigmen

● imperativ

- Veränderung von Variablen

- Turtle-Geometrie

● objektorientiert


Zusammenfassung:

Programmierparadigmen

● imperativ

- Veränderung von Variablen

- Turtle-Geometrie

● objektorientiert

● regelbasiert


Zusammenfassung:

Programmierparadigmen

● imperativ

- Veränderung von Variablen

- Turtle-Geometrie

● objektorientiert

● regelbasiert

- L-Systeme

- Graph-Grammatiken


Zusammenfassung:

Programmierparadigmen

● imperativ

- Veränderung von Variablen

- Turtle-Geometrie

● objektorientiert

● regelbasiert

- L-Systeme

- Graph-Grammatiken

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


Anwendungsschwerpunkte:

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

„eXtended L-system language“

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


imperativ

objektorientiert

regelbasiert

Java

XL


Turtle-Geometrie

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


Turtle geometry ("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):

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")

M0forward 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

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))

( F0 RU(90) LMul(0.8) )


anderes Beispiel:

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

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


anderes Beispiel:

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

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


Erweiterung auf 3D-Grafik:

Turtle-Rotationen um 3 Achsen


Erweiterung auf 3D-Grafik:

Turtle-Rotationen um 3 Achsen

left

head

up


Erweiterung auf 3D-Grafik:

Turtle-Rotationen um 3 Achsen

RL

RH

RU


3D-Befehle:

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:

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:

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:

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

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

protected void init()

[

Axiom ==>Turtle-Befehlsfolge

]


Beispiel: Zeichnen eines Dreiecks

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:

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

- Einführung

- Lektionen 1 - 4

- Lektion 23


  • Login