1 / 45

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

Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2010 - Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik 3. Vorlesung: 22. 4. 2010. letztes Mal: Laden von dtd-Dateien erste Analysen von Verzweigungssystemen

nicole
Download Presentation

Struktur-Funktions-Modelle von Pflanzen - Sommersemester 2010 - 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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. letztes Mal: • Laden von dtd-Dateien • erste Analysen von Verzweigungssystemen • Programmierparadigmen (imperativ, objektorientiert, • regelbasiert) • Turtle-Geometrie • deren Ausführung mit GroIMP

  3. Beispiel: Zeichnen eines Dreiecks protected void init() [ Axiom ==> RU(30) F(10) RU(120) F(10) RU(120) F(10) ] siehe Dateism09_b01.rgg

  4. heute: • einfache L-Systeme (Zeichenketten-Ersetzungssysteme) • ihre Ausführung mit GroIMP • einfache Verzweigungsmuster, modelliert mit L-Systemen

  5. Dynamische Strukturbeschreibung L-Systeme (Lindenmayer-Systeme) Regelsysteme zur Ersetzung von Zeichenketten in jedem Ableitungsschritt parallele Ersetzung aller Zeichen, auf die eine Regel anwendbar ist von A. Lindenmayer (Botaniker) 1968 zur Modellierung des Wachstums von fadenförmigen Algen eingeführt Aristid Lindenmayer (1925-1989)

  6. L-Systeme mathematisch: • Ein L-System ist ein Tripel (, , R); darin ist: • eine Menge von Zeichen, das Alphabet, • eine Zeichenkette mit Zeichen aus , das Startwort (auch "Axiom"), R eine Menge von Regeln der Form Zeichen  Zeichenkette; darin sind das Zeichen auf der linken Regelseite und die Zeichenkette aus  entnommen.

  7. zum Vergleich: Grammatik für natürliche Sprache: Satz  S P O S  Max S  Tina P  lernt O  Englisch O  Französisch mögliche Ableitungen: Satz Satz S P O S P O Max lernt Französisch Tina lernt Englisch

  8. Ein Ableitungsschritt (rewriting) einer Zeichenkette besteht aus der Ersetzung aller ihrer Zeichen, die in linken Regelseiten vorkommen, durch die entsprechenden rechten Regelseiten. Man vereinbart: Zeichen, auf die keine Regeln anwendbar sind, werden unverändert übernommen.

  9. Ein Ableitungsschritt (rewriting) einer Zeichenkette besteht aus der Ersetzung aller ihrer Zeichen, die in linken Regelseiten vorkommen, durch die entsprechenden rechten Regelseiten. Man vereinbart: Zeichen, auf die keine Regeln anwendbar sind, werden unverändert übernommen. Ergebnis: Ableitungskette von Zeichenketten, die sich durch wiederholte Anwendung des Ersetzungsvorgangs aus dem Startwort ergeben. • 123 ....

  10. Beispiel: Alphabet {A, B}, Startwort A Regelmenge: A  B B  AB

  11. Beispiel: Alphabet {A, B}, Startwort A Regelmenge: A  B B  AB A

  12. Beispiel: Alphabet {A, B}, Startwort A Regelmenge: A  B B  AB B

  13. Beispiel: Alphabet {A, B}, Startwort A Regelmenge: A  B B  AB AB parallele Ersetzung

  14. Beispiel: Alphabet {A, B}, Startwort A Regelmenge: A  B B  AB BAB

  15. Beispiel: Alphabet {A, B}, Startwort A Regelmenge: A  B B  AB BAB

  16. Beispiel: Alphabet {A, B}, Startwort A Regelmenge: A  B B  AB ABBAB

  17. Beispiel: Alphabet {A, B}, Startwort A Regelmenge: A  B B  AB Ableitungskette: A  B  AB  BAB  ABBAB  BABABBAB  ABBABBABABBAB  BABABBABABBABBABABBAB  ...

  18. Beispiel: Alphabet {A, B}, Startwort A Regelmenge: A  B B  AB Ableitungskette: A  B  AB  BAB  ABBAB  BABABBAB  ABBABBABABBAB  BABABBABABBABBABABBAB  ... wie lang ist die n-te Zeichenkette in dieser Ableitung?

  19. was für die Modellierung von grafischen und biologischen Strukturen noch fehlt: eine geometrische Interpretation

  20. was für die Modellierung von grafischen und biologischen Strukturen noch fehlt: eine geometrische Interpretation Füge also hinzu: eine Abbildung, die jeder Zeichenkette eine Teilmenge des 3-dimensionalen Raumes zuordnet dann: "interpretierte" L-System-Abarbeitung 123 ....  S1S2S3 .... S1, S2, S3, ... können als Entwicklungsstufen eines Objekts, einer Szene oder eines Organismus interpretiert werden.

  21. Für die Interpretation der Zeichenketten: Turtle-Geometrie Der Turtle-Befehlsvorrat wird zu einer Untermenge der Zeichenmenge des L-Systems. Symbole, die nicht Turtle-Befehle sind, werden von der Turtle ignoriert.

  22. Für die Interpretation der Zeichenketten: Turtle-Geometrie Der Turtle-Befehlsvorrat wird zu einer Untermenge der Zeichenmenge des L-Systems. Symbole, die nicht Turtle-Befehle sind, werden von der Turtle ignoriert.  Verbindung mit dem imperativen Paradigma

  23. Beispiel: Regeln A ==> F0 [ RU(45) B ] A ; B ==> F0 B ; Startwort A (A und B werden normalerweise nicht geometrisch interpretiert.) Interpretation durch Turtle-Geometrie

  24. 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 StartwortL(10)A ?

  25. 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;

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

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

  28. 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“

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

  30. .

  31. vergleiche 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 rechten Regelseite wird // durch das x auf die linke Seite mit heruebergemomen F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3); ]

  32. Verzweigungsbeispiel: F0==> F0 [ RU(25.7) F0 ] F0 [ RU(-25.7) F0 ] F0 ; Ergebnis nach 7 Schritten: (Startwort L(10) F0)

  33. Verzweigungsbeispiel: F0==> F0 [ RU(25.7) F0 ] F0 [ RU(-25.7) F0 ] F0 ; Ergebnis nach 7 Schritten: (Startwort L(10) F0) nicht sehr botanisch!!

  34. 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 */ // Example of a simple tree architecture (Schoute architecture) //----------- Extensions to the standard alphabet ---------- //Shoot() is an extension of the turtle-command F() and stands for an annual shoot module Shoot(float len) extends F(len); // Bud is an extension of a sphere object and stands for a terminal bud // its strength controls the length of the produced shoot in the next timestep 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 () [ // a square bracket [] will indicate a branch (daughter relation) // Rotation around upward axis (RU) and head axis (RH) // Decrease of strength of the Bud (each step by 20%) Bud(x) ==> Shoot(x) [ RU(30) Bud(0.8*x) ] [ RU(-30) Bud(0.8*x) ]; ]

  35. Verzweigung, alternierende Zweigstellung und Verkürzung: Axiom==> L(10) F0 A ; A ==> LMul(0.5) [ RU(90) F0 ] F0 RH(180) A ; in XL muss hier A zuvor als eigenes Modul deklariert werden: module A;

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

  37. 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) ==> ....

  38. 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);

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

  40. Hausaufgabe: Lesen Sie Chapter 1, Section 1.1 – 1.6 (ohne 1.4) im Buch „The Algorithmic Beauty of Plants“ von P. Prusinkiewicz und A. Lindenmayer (online verfügbar, siehe Literaturseite zur Veranstaltung). (= S. 1-27 ohne Abschnitt 1.4).

More Related