regelbasierte programmierung mit xl - sommersemester 2008 - winfried kurth reinhard hemmerling btu...
TRANSCRIPT
![Page 1: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/1.jpg)
Regelbasierte Programmierung mit XL- Sommersemester 2008 -
Winfried Kurth
Reinhard Hemmerling
BTU Cottbus, Lehrstuhl Grafische Systeme
![Page 2: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/2.jpg)
![Page 3: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/3.jpg)
Die Sprache XL
„eXtended L-system language“
![Page 4: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/4.jpg)
imperativ objektorientiert regelbasiert
Java
![Page 5: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/5.jpg)
imperativ objektorientiert regelbasiert
Java
XL
![Page 6: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/6.jpg)
Der Begriff "Programmierparadigma"
Paradigma:
grundlegende Denkweise,beispielorientierte Vorstellung
![Page 7: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/7.jpg)
Paradigma:
"Beschreibt eine Menge von Theorien,Standards und Methoden, die gemeinsameinen Weg repräsentieren, Wissen zu organisieren"
Thomas Kuhn 1970: The Structureof Scientific Revolutions
![Page 8: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/8.jpg)
Paradigma:
"Beschreibt eine Menge von Theorien,Standards und Methoden, die gemeinsameinen Weg repräsentieren, Wissen zu organisieren"
Thomas Kuhn 1970: The Structureof Scientific Revolutions
Paradigmenwechsel: schwierig.Revolution im Denken!
![Page 9: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/9.jpg)
wurde aufgegriffen von Robert Floyd 1978:
Turing Award Lecture
"The Paradigmsof Programming"
Robert W. Floyd (1936-2001)
![Page 10: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/10.jpg)
Welche Paradigmen werden nahegelegtdurch Probleme...
... bei der Simulation natürlicher Objekte ?
... in der Grafik ?
![Page 11: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/11.jpg)
Ökologie:
![Page 12: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/12.jpg)
Ökologie:
Organismen
![Page 13: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/13.jpg)
Ökologie:
Organismen
Aufbau beschreiben
![Page 14: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/14.jpg)
Ökologie:
Organismen
Verhalten(unter bestimmtenBedingungen)
Aufbau beschreiben
![Page 15: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/15.jpg)
Ökologie:
Organismen
Verhalten(unter bestimmtenBedingungen)
Aufbau beschreiben
Gesetzmäßigkeiten(Regeln) bestimmen
![Page 16: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/16.jpg)
Ökologie:
Organismen
Verhalten(unter bestimmtenBedingungen)
Prozesse
Aufbau beschreiben
Gesetzmäßigkeiten(Regeln) bestimmen
![Page 17: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/17.jpg)
Ökologie:
Organismen
Verhalten(unter bestimmtenBedingungen)
Prozesse
Aufbau beschreiben
Gesetzmäßigkeiten(Regeln) bestimmenAblauf berechnen
![Page 18: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/18.jpg)
Grafisches System:
![Page 19: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/19.jpg)
Grafisches System:
Objekte
![Page 20: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/20.jpg)
Grafisches System:
Objekte(mit Attributen)
![Page 21: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/21.jpg)
Grafisches System:
Objekte(mit Attributen)
regelmäßigeStrukturen
![Page 22: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/22.jpg)
Grafisches System:
Objekte(mit Attributen)
regelmäßigeStrukturen
Prozesse
![Page 23: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/23.jpg)
Einige wichtige Programmierparadigmen
- für numerische Simulation von Prozessen:
imperatives Paradigma
![Page 24: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/24.jpg)
Einige wichtige Programmierparadigmen
- für numerische Simulation von Prozessen:
imperatives Paradigma(auch: von-Neumann-Paradigma,Kontrollfluss-Paradigma)
John von Neumann (1903-1957)
![Page 25: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/25.jpg)
"Befehls-Programmierung"
Computer = ?
imperativ:
![Page 26: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/26.jpg)
"Befehls-Programmierung"
Computer = Maschine zur Veränderung von Variablen-werten.
![Page 27: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/27.jpg)
"Befehls-Programmierung"
Computer = Maschine zur Veränderung von Variablen-werten (diese Veränderungen können Seiteneffekte haben).
![Page 28: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/28.jpg)
"Befehls-Programmierung"
Computer = Maschine zur Veränderung von Variablen-werten.
Programm = ?
![Page 29: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/29.jpg)
"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).
![Page 30: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/30.jpg)
"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: ?
![Page 31: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/31.jpg)
"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.
![Page 32: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/32.jpg)
"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, ...
![Page 33: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/33.jpg)
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)!
![Page 34: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/34.jpg)
Nachteil des imperativen Paradigmas:
simultane, parallele Zuweisung wird nicht unterstützt
![Page 35: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/35.jpg)
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); }
![Page 36: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/36.jpg)
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); }
![Page 37: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/37.jpg)
Programmiersprachen, die das imperative Paradigma unterstützen:
Fortran, Pascal, C, ..., Teile von Java,Befehlssprache der Turtle-Geometrie
![Page 38: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/38.jpg)
Turtle:
zeichnende Schildkröte, die auf Befehle hört
![Page 39: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/39.jpg)
Turtle:
zeichnende Schildkröte, die auf Befehle hört
![Page 40: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/40.jpg)
F0
![Page 41: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/41.jpg)
F0
![Page 42: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/42.jpg)
F0 RU(90)
![Page 43: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/43.jpg)
F0 RU(90)
![Page 44: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/44.jpg)
F0 RU(90) F0
![Page 45: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/45.jpg)
F0 RU(90) F0
![Page 46: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/46.jpg)
F0 RU(90) F0 RU(90) LMul(0.5) F0
![Page 47: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/47.jpg)
F0 RU(90) F0 RU(90) LMul(0.5) F0
![Page 48: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/48.jpg)
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) ) ?
![Page 49: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/49.jpg)
L(10) for ((1:6)) ( F0 RU(90) LMul(0.8) )
![Page 50: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/50.jpg)
anderes Beispiel:
for ((1:20)) ( for ((1:36))
( F0 RU(165) F0 RU(165) ) RU(270) )
![Page 51: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/51.jpg)
anderes Beispiel:
for ((1:20)) ( for ((1:36))
( F0 RU(165) F0 RU(165) ) RU(270) )
![Page 52: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/52.jpg)
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
![Page 53: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/53.jpg)
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")
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
![Page 54: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/54.jpg)
Erweiterung auf 3D-Grafik:
Turtle-Rotationen um 3 Achsen
![Page 55: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/55.jpg)
Erweiterung auf 3D-Grafik:
Turtle-Rotationen um 3 Achsen
head
left
up
![Page 56: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/56.jpg)
Erweiterung auf 3D-Grafik:
Turtle-Rotationen um 3 Achsen
RHRL
RU
![Page 57: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/57.jpg)
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))
![Page 58: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/58.jpg)
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 ?
![Page 59: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/59.jpg)
Verzweigungen: Realisierung mit Speicher-Befehlen
[ lege aktuellen Zustand auf Speicher ("Ablage", Stack)
] nimm obersten Zustand von der Ablage und mache diesen zum aktuellen Zustand (damit: Ende der Verzweigung)
![Page 60: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/60.jpg)
Verzweigungen: Realisierung mit Speicher-Befehlen
[ lege aktuellen Zustand auf Speicher ("Ablage", Stack)
] nimm obersten Zustand von der Ablage und mache diesen zum aktuellen Zustand (damit: Ende der Verzweigung)
F0 [ RU(-20) F0 ] RU(20) DMul(2) F0
![Page 61: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/61.jpg)
zurück zum Beispiel:
Objekte(mit Attributen)
![Page 62: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/62.jpg)
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, ...
![Page 63: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/63.jpg)
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)
![Page 64: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/64.jpg)
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)
![Page 65: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/65.jpg)
regelmäßigeStrukturen
![Page 66: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/66.jpg)
Regelbasiertes Paradigma
Computer = Transformationsmaschine für Strukturen
Es gibt eine aktuelle Struktur, die solange transformiert wird, wie dies möglich ist.
![Page 67: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/67.jpg)
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.
![Page 68: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/68.jpg)
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
![Page 69: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/69.jpg)
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
![Page 70: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/70.jpg)
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, ...
![Page 71: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/71.jpg)
Regelsysteme zur Ersetzung von Zeichenketten
Beispiel: L-Systeme (Lindenmayer-Systeme)
![Page 72: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/72.jpg)
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
Beispiel: L-Systeme (Lindenmayer-Systeme)
Aristid Lindenmayer (1925-1989)
![Page 73: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/73.jpg)
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.
![Page 74: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/74.jpg)
zum Vergleich:
Chomsky-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
![Page 75: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/75.jpg)
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.
![Page 76: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/76.jpg)
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 rewriting-Vorgangs aus dem Startwort ergeben.
1 2 3 ....
![Page 77: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/77.jpg)
Beispiel:
Alphabet {A, B}, Startwort A
Regelmenge:
A BB AB
![Page 78: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/78.jpg)
Beispiel:
Alphabet {A, B}, Startwort A
Regelmenge:
A BB AB
A
![Page 79: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/79.jpg)
Beispiel:
Alphabet {A, B}, Startwort A
Regelmenge:
A BB AB
B
![Page 80: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/80.jpg)
Beispiel:
Alphabet {A, B}, Startwort A
Regelmenge:
A BB AB
AB
parallele Ersetzung
![Page 81: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/81.jpg)
Beispiel:
Alphabet {A, B}, Startwort A
Regelmenge:
A BB AB
BAB
![Page 82: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/82.jpg)
Beispiel:
Alphabet {A, B}, Startwort A
Regelmenge:
A BB AB
BAB
![Page 83: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/83.jpg)
Beispiel:
Alphabet {A, B}, Startwort A
Regelmenge:
A BB AB
ABBAB
![Page 84: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/84.jpg)
Beispiel:
Alphabet {A, B}, Startwort A
Regelmenge:
A BB AB
Ableitungskette:
A B AB BAB ABBAB BABABBAB
ABBABBABABBAB BABABBABABBABBABABBAB
...
![Page 85: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/85.jpg)
Beispiel:
Alphabet {A, B}, Startwort A
Regelmenge:
A BB AB
Ableitungskette:
A B AB BAB ABBAB BABABBAB
ABBABBABABBAB BABABBABABBABBABABBAB
...
wie lang ist die n-te Zeichenkette in dieser Ableitung?
![Page 86: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/86.jpg)
was für die Modellierung von grafischen und biologischen Strukturen noch fehlt:
eine geometrische Interpretation
![Page 87: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/87.jpg)
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 ....
S1 S2 S3 ....
S1, S2, S3, ... können als Entwicklungsstufen eines Objekts,
einer Szene oder eines Organismus interpretiert werden.
![Page 88: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/88.jpg)
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.
![Page 89: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/89.jpg)
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
![Page 90: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/90.jpg)
Beispiel:
Regeln
A F0 [ RU(45) B ] A ;B F0 B ;
Startwort A
(A und B werden normalerweise nicht geometrisch interpretiert.)
InterpretationdurchTurtle-Geometrie
![Page 91: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/91.jpg)
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 ?
![Page 92: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/92.jpg)
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;
![Page 93: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/93.jpg)
Flächenfüllende Kurve:
Start ==> 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
weiteres Beispiel:
![Page 94: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/94.jpg)
Flächenfüllende Kurve:
Start ==> 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
![Page 95: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/95.jpg)
Flächenfüllende Kurve:
Start ==> 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“
![Page 96: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/96.jpg)
Beispiel für ein Fraktal:
Koch'sche Kurve
Start RU(90) F(10);F(x) F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3)
![Page 97: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/97.jpg)
![Page 98: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/98.jpg)
![Page 99: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/99.jpg)
![Page 100: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/100.jpg)
![Page 101: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/101.jpg)
![Page 102: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/102.jpg)
.
![Page 103: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/103.jpg)
Verzweigungsbeispiel:
F0 F0 [ RU(25.7) F0 ] F0 [ RU(-25.7) F0 ] F0 ;
Ergebnis nach 7 Schritten:
(Startwort L(10) F0)
![Page 104: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/104.jpg)
Verzweigung, alternierende Zweigstellung und Verkürzung:
L(10) F0 A ;
A LMul(0.5) [ RU(90) F0 ] F0 RH(180) A ;
![Page 105: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/105.jpg)
welche Struktur liefert
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)
![Page 106: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/106.jpg)
Stochastische L-SystemeVerwendung von Pseudozufallszahlen
Beispiel:
deterministisch
Start ==> L(100) D(5) A;
A ==> F0 LMul(0.7) DMul(0.7) [ RU(50) A ] [ RU(-10) A ];
![Page 107: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/107.jpg)
Stochastische L-SystemeVerwendung von Pseudozufallszahlen
Beispiel:
deterministisch stochastisch
Start ==> L(100) D(5) A;
A ==> F0 LMul(0.7) DMul(0.7) [ RU(50) A ] [ RU(-10) A ];
Start ==> L(100) D(5) A;
A ==> F0 LMul(0.7) DMul(0.7) if (probability(0.5)) ( [ RU(50) A ] [ RU(-10) A ] ) else ( [ RU(-50) A ] [ RU(10) A ] );
![Page 108: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/108.jpg)
Beispiel: Fichtenmodell in 3D
mit L-System erzeugt
![Page 109: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/109.jpg)
Erzeugung einer Zufallsverteilung in der Ebene:
Axiom ==> D(0.5) for ((1:300))
( [ Translate(random(0, 100), random(0, 100), 0)
F(random(5, 30)) ] );
Ansicht von oben schräg von der Seite
![Page 110: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/110.jpg)
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 ParameterlistenParameter 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) ....
![Page 111: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/111.jpg)
Welche Struktur wird von folgendem L-System erzeugt?
[ RU(90) M(1) RU(90) A(1) ] A(1);
A(n) F(n) RU(90) A(n+1);
![Page 112: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/112.jpg)
Welche Struktur wird von folgendem L-System erzeugt?
[ 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.
![Page 113: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/113.jpg)
Interpretationsregeln
Einbau einer weiteren Regelanwendung unmittelbar vor der grafischen Interpretation (ohne Wirkung auf die nächste Generation)
Interpretationsregel-Anwendung
Turtle-Interpretation
public void run(){ [ Axiom ==> A; A ==> Scale(0.3333) for (i:(-1:1)) for (j:(-1:1)) if ((i+1)*(j+1) != 1) ( [ Translate(i, j, 0) A ] ); ] applyInterpretation();}
public void interpret() [ A ==> Box; ]
Beispiel:
![Page 114: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/114.jpg)
public void run(){ [ Axiom ==> A; A ==> Scale(0.3333) for (i:(-1:1)) for (j:(-1:1)) if ((i+1)*(j+1) != 1) ( [ Translate(i, j, 0) A ] ); ] applyInterpretation();}
public void interpret() [ A ==> Box; ]
(a)
(b) (c)A ==> Sphere(0.5); A ==> Box(0.1, 0.5, 0.1) Translate(0.1, 0.25, 0) Sphere(0.2);
![Page 115: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/115.jpg)
was wird durch dieses Beispiel erzeugt?
public void run(){ [ Axiom ==> [ A(0, 0.5) D(0.7) F(60) ] A(0, 6) F(100); A(t, speed) ==> A(t+1, speed); ] applyInterpretation();}public void interpret() [ A(t, speed) ==> RU(speed*t); ]
![Page 116: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/116.jpg)
Kontextsensitivität
Abfrage eines Kontexts, der vorhanden sein muss, damit eine Regel anwendbar ist
Angabe des Kontexts in (* .... *)
Beispiel:
module A(int age);module B(super.length, super.color) extends F(length, 3, color);Axiom ==> A(0);A(t), (t < 5) ==> B(10, 2) A(t+1);A(t), (t == 5) ==> B(10, 4);B(s, 2) (* B(r, 4) *) ==> B(s, 4);B(s, 4) ==> B(s, 3) [ RH(random(0, 360)) RU(30) F(30, 1, 14) ];
![Page 117: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/117.jpg)
Der Schritt zu relationalen Wachstumsgrammatiken
Nachteil von L-Systemen:• in L-Systemen mit Verzweigungen (über Turtle-Kommandos) nur 2 mögliche Relationen zwischen Objekten: "direkter Nachfolger" und "Verzweigung"
Erweiterungen:
• Zulassen weiterer Relationstypen (beliebig wählbar)• Zulassen von Zyklen ( Graph-Grammatik)
![Page 118: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/118.jpg)
ebenfalls regelbasierter Mechanismus:
Graph-Grammatiken
![Page 119: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/119.jpg)
ebenfalls regelbasierter Mechanismus:
Graph-Grammatiken
Regel:
![Page 120: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/120.jpg)
ebenfalls regelbasierter Mechanismus:
Graph-Grammatiken
Regel:
Anwendung:
![Page 121: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/121.jpg)
RELATIONALE WACHSTUMSGRAMMATIKEN (RGG: Relational Growth Grammars, parallele Graph-Gramm.)
Aufbau einer Regel einer RGG:
![Page 122: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/122.jpg)
Kanten-Markierungen repräsentieren verschiedene Artenvon Relationen:
• ist Nachbar von
• enthält
• trägt
• codiert (genetisch)
• ist gepaart mit
• (...)auch möglich: Darstellung von multiskalierten Strukturen
Standard-Kantentypen:
successor ( > oder blank), branch ( +> oder erste Kante bei Klammern [...]), refinement ( /> )
![Page 123: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/123.jpg)
RGG als Verallgemeinerungen von L-Systemen:
Zeichenketten entsprechen speziellen Graphen
In Textform schreiben wir allgemeine (selbstdefinierte) Kanten als -kantensorte->
Kanten des speziellen Typs "Nachfolger" werden meist als Leerzeichen geschrieben (statt -successor->)
![Page 124: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/124.jpg)
Sonderformen von RGG-Regeln:
Aktualisierungsregeln (Regelpfeil ::> ): es werden nur Parameter verändert
Beispiel: s:Sphere ::> s[radius] += increment;
Instanzierungsregeln: einzelne Zeichen werden in Substrukturen aufgelöst, ohne Einfluss auf den nächsten Entwicklungsschritt(Regel muss dann direkt in der Moduldeklaration stehen)
Beispiel: module S(float value) extends Null ==> { float x = value;} Sphere(0.1).(setShader(new RGBAShader(1,1-x,1-x)));
![Page 125: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/125.jpg)
• Grammatik modifiziert direkt den Graphen, Umweg über String-Codierung entfällt (bzw. wird nur noch für Regel-Input gebraucht)
außerdem Nachteil der Turtle-Interpretation von L-Systemen: Segmente sind nur Zylinder, keine Objekte im Sinne der OOP
Erweiterungen:
• Knoten des Graphen können beliebige Objekte sein (auch Grafikobjekte)
• Einbettung von Code einer höheren, imperativen oder objektorientierten Programmiersprache in die Regeln (für uns: Java)
![Page 126: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/126.jpg)
Zusammenfassung:
Programmierparadigmen
![Page 127: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/127.jpg)
Zusammenfassung:
Programmierparadigmen
● imperativ
![Page 128: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/128.jpg)
Zusammenfassung:
Programmierparadigmen
● imperativ
- Veränderung von Variablen
- Turtle-Geometrie
![Page 129: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/129.jpg)
Zusammenfassung:
Programmierparadigmen
● imperativ
- Veränderung von Variablen
- Turtle-Geometrie
● objektorientiert
![Page 130: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/130.jpg)
Zusammenfassung:
Programmierparadigmen
● imperativ
- Veränderung von Variablen
- Turtle-Geometrie
● objektorientiert
● regelbasiert
![Page 131: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/131.jpg)
Zusammenfassung:
Programmierparadigmen
● imperativ
- Veränderung von Variablen
- Turtle-Geometrie
● objektorientiert
● regelbasiert
- L-Systeme
- Graph-Grammatiken
![Page 132: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/132.jpg)
Zusammenfassung:
Programmierparadigmen
● imperativ
- Veränderung von Variablen
- Turtle-Geometrie
● objektorientiert
● regelbasiert
- L-Systeme
- Graph-Grammatiken
● weitere: funktional; nebenläufig; chemisch ...
![Page 133: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/133.jpg)
Synthese: Die Sprache XL
„eXtended L-system language“
Programmiersprache, die parallele Graph-Grammatiken (RGG) einfach verfügbar macht
![Page 134: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/134.jpg)
imperativ objektorientiert regelbasiert
Java
XL
![Page 135: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/135.jpg)
Die Sprache XL
Sprachspezifikation: Kniemeyer (2007/08)
(Dissertation erscheint in Kürze)
Erweiterung von Java
erlaubt zugleich Spezifikation von L-Systemen und RGG in intuitiv verständlicher Regelschreibweise
prozedurale Blöcke, ähnlich Java: { ... }
regelorientierte Blöcke (RGG-Teil): [ ... ]
![Page 136: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/136.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
![Page 137: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/137.jpg)
Beispiel: XL-Programm für die Koch‘sche Kurve
public void derivation() [ 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); ]
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
![Page 138: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/138.jpg)
Beispiel: XL-Programm für die Koch‘sche Kurve
public void derivation() [ 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); ]
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Knoten des Graphen
Kanten (Typ „Nachfolger“)
![Page 139: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/139.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Spezielle Knoten:
Geometrieobjekte
Box, Sphere, Cylinder, Cone, Frustum, Parallelogram...
![Page 140: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/140.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Spezielle Knoten:
Geometrieobjekte
Box, Sphere, Cylinder, Cone, Frustum, Parallelogram...
Zugriff auf Properties über Parameterliste (Konstruktor):
Box(x, y, z)
oder mit setter-Methoden:
Box(...).(setColor(0x007700))
![Page 141: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/141.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Spezielle Knoten:
Geometrieobjekte
Box, Sphere, Cylinder, Cone, Frustum, Parallelogram...
Transformationsknoten
Translate(x, y, z), Scale(cx, cy, cz), Scale(c),
Rotate(a, b, c), RU(a), RL(a), RH(a), RV(c), RG, ...
![Page 142: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/142.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
Spezielle Knoten:
Geometrieobjekte
Box, Sphere, Cylinder, Cone, Frustum, Parallelogram...
Transformationsknoten
Translate(x, y, z), Scale(cx, cy, cz), Scale(c),
Rotate(a, b, c), RU(a), RL(a), RH(a), RV(c), RG, ...
Lichtquellen
PointLight, DirectionalLight, SpotLight, AmbientLight
![Page 143: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/143.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
![Page 144: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/144.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
Beispiel: Regeln für den stochastischen Baum
Start ==> L(100) D(5) A;
A ==> F0 LMul(0.7) DMul(0.7) if (probability(0.5)) ( [ RU(50) A ] [ RU(-10) A ] ) else ( [ RU(-50) A ] [ RU(10) A ] );
![Page 145: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/145.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
● parallele Regelanwendung
![Page 146: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/146.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
● parallele Regelanwendung
● parallele Ausführung von Zuweisungen möglich
![Page 147: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/147.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
● parallele Regelanwendung
● parallele Ausführung von Zuweisungen möglich
nochmal das Beispiel von Floyd:
Räuber-Beute-System, beschrieben durch Rneu = f(R, B), Bneu = g(R, B)
in XL korrekt:
R := f(R, B); B := g(R, B);
![Page 148: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/148.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
● parallele Regelanwendung
● parallele Ausführung von Zuweisungen möglich
● Operatorüberladung (z.B. „+“ für Zahlen wie für Vektoren)
![Page 149: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/149.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
● parallele Regelanwendung
● parallele Ausführung von Zuweisungen möglich
● Operatorüberladung (z.B. „+“ für Zahlen wie für Vektoren)
● mengenwertige Ausdrücke (genauer: Producer statt Mengen)
![Page 150: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/150.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
● parallele Regelanwendung
● parallele Ausführung von Zuweisungen möglich
● Operatorüberladung (z.B. „+“ für Zahlen wie für Vektoren)
● mengenwertige Ausdrücke (genauer: Producer statt Mengen)
● Graph-Abfragen (queries) zur Analyse der aktuellen Struktur
![Page 151: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/151.jpg)
Beispiel für Graph-query:
Binärer Baum, Wachstum soll nur erfolgen, wenn genügender Abstand zu anderen F-Objekten
Axiom ==> F(100) [ RU(-30) A(70) ] RU(30) A(100);a:A(s) ==> if ( forall(distance(a, (* F *)) > 60) ) ( RH(180) F(s) [ RU(-30) A(70) ] RU(30) A(100) )
ohne die if-Bedingung mit der if-Bedingung
![Page 152: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/152.jpg)
Eigenschaften der Sprache XL:
● Knoten der Graphen sind Java-Objekte, auch Geometrie-Objekte
● Regeln in Blöcken [...] organisierbar, Steuerung der Anwendung durch Kontrollstrukturen
● parallele Regelanwendung
● parallele Ausführung von Zuweisungen möglich
● Operatorüberladung (z.B. „+“ für Zahlen wie für Vektoren)
● mengenwertige Ausdrücke (genauer: Producer statt Mengen)
● Graph-Abfragen (queries) zur Analyse der aktuellen Struktur
● aggregierende Operatoren (z.B. „sum“, „mean“, „forall“, „selectWhereMin“)
![Page 153: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/153.jpg)
Anfragen (queries) in den erzeugten Graphen
Möglichkeit der Verbindung von Struktur und Funktion
Beispiel: suche alle Blätter, die Nachfolger des Knotens c sind, und summiere deren Fläche
![Page 154: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/154.jpg)
Anfragen (queries) in den erzeugten Graphen
Möglichkeit der Verbindung von Struktur und Funktion
Beispiel: suche alle Blätter, die Nachfolger des Knotens c sind, und summiere deren Fläche
transitive Hüllenbildung
Aggregationsoperator
![Page 155: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/155.jpg)
Anfragen (queries) in den erzeugten Graphen
Möglichkeit der Verbindung von Struktur und Funktion
Beispiel: suche alle Blätter, die Nachfolger des Knotens c sind, und summiere deren Fläche
transitive Hüllenbildung
Aggregationsoperator
Ergebnis kann übergeben werden an prozedurale Berechnung
![Page 156: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/156.jpg)
Query in einem Pflanzen- / Tier-Modell:
p:Plant,
(* a:Animal, (distance(a,p) < p[radius]) *)
![Page 157: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/157.jpg)
Query in einem Pflanzen- / Tier-Modell:
p:Plant,
(* a:Animal, (distance(a,p) < p[radius]) *)
sucht alle Tiere innerhalb des Radius von p
![Page 158: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/158.jpg)
was ist von der in XL erzeugten Graph-Struktur sichtbar?
alle Geometrieknoten, die von der Wurzel (Zeichen: ^) des Graphen über genau einen Pfad, der nur aus "successor"- und "branch"-Kanten besteht, erreichbar sind.
Erzwingen, dass ein Objekt auf jeden Fall sichtbar ist:
==>> ^ Objekt
![Page 159: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/159.jpg)
Ein XL-Compiler wird zur Verfügung gestellt von der freien Software GroIMP
http://www.grogra.de
dort auch Link auf Download-Seite
![Page 160: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/160.jpg)
Interaktive 3D-Plattform GroIMP (Growth-grammar related
Interactive Modelling Platform) mit XL-Compiler
• GroIMP ist ein Open Source-Projekt
![Page 161: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/161.jpg)
GroIMP ist eine Kombination von:
- Graph-Grammatiken- (XL-) Interpreter
- Entwicklungsumgebung für XL
- 3D-Modeller
- 3D-Renderer (mehrere Varianten)
- 2D-Graphen-Visualisierer
- Editor für 3D-Objekte und Attribute
- Texturerzeugungswerkzeug
- X3D- (VRML-) Viewer (in Arbeit)
![Page 162: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/162.jpg)
Beispiel eines mit GroIMP realisierten Pflanzenmodells (Gerste):
![Page 163: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/163.jpg)
Anwendungsbeispiel: Modellierung von Parklandschaften
(Rogge & Moschner 2007, für Stiftung Branitzer Park, Cottbus)
mit GroIMP generierte Erlein VRML-Welt
![Page 164: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/164.jpg)
virtuelle Landschaft (mit Buchen-Fichten-Mischbestand)
![Page 165: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/165.jpg)
![Page 166: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/166.jpg)
Ergebnisse aus Architektur-Seminar mit XL:Liang 2007
![Page 167: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/167.jpg)
![Page 168: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/168.jpg)
Jarchow 2007
![Page 169: Regelbasierte Programmierung mit XL - Sommersemester 2008 - Winfried Kurth Reinhard Hemmerling BTU Cottbus, Lehrstuhl Grafische Systeme](https://reader035.vdocuments.mx/reader035/viewer/2022062622/55204d6749795902118bc410/html5/thumbnails/169.jpg)