Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Struktur-Funktions-Modelle von Pflanzen

Ähnliche Präsentationen


Präsentation zum Thema: "Struktur-Funktions-Modelle von Pflanzen"—  Präsentation transkript:

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

2 letztes Mal: Turtle-Geometrie deren Ausführung mit GroIMP
einfache L-Systeme (Lindenmayer-Systeme; Zeichenketten-Ersetzungssysteme)

3 heute: L-Systeme: weitere Beispiele ihre Ausführung mit GroIMP
einfache Verzweigungsmuster, modelliert mit L-Systemen

4 Beispiel für ein einfaches L-System:
Regeln A ==> F0 [ RU(45) B ] A ; B ==> F0 B ; Startwort A (A und B werden normalerweise nicht geometrisch interpretiert.) Interpretation durch Turtle-Geometrie

5 was für eine Struktur liefert das L-System
A ==> [ LMul(0.25) RU(-45) F0 ] F0 B; B ==> [ LMul(0.25) RU(45) F0 ] F0 A; mit Startwort L(10) A ?

6 was für eine Struktur liefert das L-System
A ==> [ LMul(0.25) RU(-45) F0 ] F0 B; B ==> [ LMul(0.25) RU(45) F0 ] F0 A; mit Startwort L(10) A ? äquivalente Regel: A ==> [ LMul(0.25) RU(-45) F0 ] F0 RH(180) A;

7 Flächenfüllende Kurve:
weiteres Beispiel: Flächenfüllende Kurve: Axiom ==> L(10) RU(-45) X RU(-45) F(1) RU(-45) X; X ==> X F0 X RU(-45) F(1) RU(-45) X F0 X

8 Flächenfüllende Kurve:
Axiom ==> L(10) RU(-45) X RU(-45) F(1) RU(-45) X; X ==> X F0 X RU(-45) F(1) RU(-45) X F0 X

9 Flächenfüllende Kurve:
Axiom ==> L(10) RU(-45) X RU(-45) F(1) RU(-45) X; X ==> X F0 X RU(-45) F(1) RU(-45) X F0 X indisches Kolam-Muster „Anklets of Krishna“

10 Beispiel für ein Fraktal: Koch'sche Kurve
Axiom ==> RU(90) F(10); F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3)

11 Axiom ==> RU(90) F(10); F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3)

12 Axiom ==> RU(90) F(10); F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3)

13 Axiom ==> RU(90) F(10); F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3)

14 Axiom ==> RU(90) F(10); F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3)

15 Axiom ==> RU(90) F(10); F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3)

16 Axiom ==> RU(90) F(10); F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3) .

17 L-Systeme mit GroIMP in der Sprache XL: protected void init()
Notation nach Prusinkiewicz & Lindenmayer: = 27.5 F F  F [ + F ] F [ - F ] F in der Sprache XL: protected void init() [ Axiom ==> L(1) F0; ] public void run() [ F0 ==> F0 [ RU(-27.5) F0 ] F0 [ RU(27.5) F0 ] F0; ]

18 Beispieldatei sm09_b02.rgg :
geschlossene Koch-Kurve, entwickelt aus Dreieck protected void init () [ Axiom ==> RU(50) F(10) RU(120) F(10) RU(120) F(10); ] // oeffentliche Methode zur interaktiven Verwendung in GroIMP // (ueber Button): public void anwendung () // Regeln muessen in []-Klammern gesetzt und mit ; beendet werden [ // jedes F() wird durch 4 kleinere F() ersetzt // die Laenge des F auf der linken Regelseite wird // durch das x auf die rechte Seite mit heruebergenommen F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3); ]

19 Deklaration neuer, eigener Symbole (Module):
L-Systeme mit GroIMP Deklaration neuer, eigener Symbole (Module): module A; module B; protected void init() [ Axiom ==> A; ] public void run() [ A ==> L(1) F0 [ RU(45) B ] A; B ==> L(1) F0 B; ] » A und B werden hier nicht geometrisch interpretiert

20 Deklaration eigener Symbole mit geometrischer Interpretation:
L-Systeme mit GroIMP Deklaration eigener Symbole mit geometrischer Interpretation: module A extends Sphere(0.1); module B extends Sphere(0.08); protected void init() [ Axiom ==> P(14) A; ] public void run() [ A ==> L(1) F0 [ RU(45) B ] A; B ==> L(1) F0 B; ]

21 Beispieldatei sm09_b03.rgg :
/* Sie lernen an diesem Beispiel: - wie Sie ein einfaches Pflanzenmodell (nach dem Architekturmodell Schoute) erstellen - wie sie Verzweigungen (Subgraphen) mit [ ] angeben */ // Beispiel einer einfachen botanischen Baumstruktur (Architekturmodell Schoute) // Erweiterungen des Standard-Alphabets (Turtle-Kommandos) // Shoot() ist eine Erweiterung des Turtle-Kommandos F() und steht fuer einen Jahres- // trieb module Shoot(float len) extends F(len); // Bud ist eine Erweiterung eines Kugel-Objekts und steht fuer eine Terminalknospe, // ihre „strength“ kontrolliert die Laenge des im naechsten Schritt erzeugten Triebes module Bud(float strength) extends Sphere(0.2) {{ setShader(RED); setTransform(0, 0, 0.3); }}; // protected void init () [ // Startzustand (eine Knospe) Axiom ==> Bud(5); ] public void run () [ // eckige Klammern [] kennzeichnen einen Seitenzweig (Relation „branch“) // Rotationen um „upward“-Achse (RU) // Verminderung der Staerke der Knospe (in jedem Schritt um 20%) Bud(x) ==> Shoot(x) [ RU(30) Bud(0.8*x) ] [ RU(-30) Bud(0.8*x) ];

22 Verzweigung, alternierende Zweigstellung und Verkürzung:
module A; Axiom ==> L(10) F0 A; A ==> LMul(0.5) [ RU(90) F0 ] F0 RH(180) A;

23 Verzweigung, alternierende Zweigstellung und Verkürzung:
module A; Axiom ==> L(10) F0 A; A ==> LMul(0.5) [ RU(90) F0 ] F0 RH(180) A;

24 welche Struktur liefert
Axiom ==> F(10) A ; A ==> [ RU(-60) F(6) RH(180) A Sphere(3) ] [ RU(40) F(10) RH(180) A Sphere(3) ]; Sphere ==> Z; ? (F(n) liefert Linie der vorgegebenen Länge n, Sphere(n) eine Kugel mit Radius n)

25 Erweiterung des Symbol-Konzepts:
Lasse reellwertige Parameter nicht nur bei Turtle-Kommandos wie "RU(45)" und "F(3)" zu, sondern bei allen Zeichen parametrische L-Systeme beliebig lange, endliche Parameterlisten Parameter werden bei Regel-Matching mit Werten belegt Beispiel: Regel A(x, y) ==> F(7*x+10) B(y/2) vorliegendes Zeichen z.B.: A(2, 6) nach der Regelanwendung: F(24) B(3) Parameter können in Bedingungen abgeprüft werden (logische Bedingungen mit Java-Syntax): A(x, y) (x >= 17 && y != 0) ==> ....

26 Beispiel:

27 Welche Struktur wird von folgendem L-System erzeugt?
Axiom ==> [ RU(90) M(1) RU(90) A(1) ] A(1); A(n) ==> F(n) RU(90) A(n+1);

28 Welche Struktur wird von folgendem 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.

29 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

30 Hausaufgabe: Lesen Sie Chapter 1, Section 1.6 – 1.7 und 1.10/ im Buch „The Algorithmic Beauty of Plants“ von P. Prusinkie-wicz und A. Lindenmayer (online verfügbar, siehe Literatur-seite zur Veranstaltung). (= S und 40-43).


Herunterladen ppt "Struktur-Funktions-Modelle von Pflanzen"

Ähnliche Präsentationen


Google-Anzeigen