Das Programm ermöglicht, Fraktale durch rekursive Definitionsgleichungen zu zeichnen und ist gleichzeitig ein anschauliches Beispiel für den Einsatz von formalen Grammatiken.
Mit Lindenmayergrammatiken lassen sich z.B. pflanzenähnliche Strukturen erzeugen.
L-System (Lindenmayer – System) - Aristid Lindenmayer (1925 - 1989, Dänemark)
Im Internet:
1)
lernarchiv.bildung.h.../edu_1196700565.html
2)
www.natur-struktur.c...ale/lindenmayer.html
In "The Fractal Geometry of Nature by Mandelbrot" wurde diese Idee besonders durch Adrian Mariano verwirklicht.
Eine Definitionsgleichung besteht aus einer Folge von Zeichen
der Menge <Sigma> = { F , G , + , - , | , [ , ] , / , \ , < , > ,! }
Dabei bedeutet:
F Zeichnen einer Linie
G Bewegen ohne Zeichnen der Linie
+ Drehung der Zeichenrichtung um einen Winkel nach oben
- Drehung der Zeichenrichtung um einen Winkel nach unten
| Drehung der Zeichenrichtung um 180°
! Vertauschen der Wirkung von +,- bzw. / und \
[ Speichern der aktuellen Zeichenposition (PUSH) Beginn eines neuen Astes
] Einstellen der zuletzt abgespeicherten Zeichenposition (POP) Ende eines Astes
/nn Drehung um nn Grad nach oben
\nn Drehung um nn Grad nach unten
<nn Multiplikation der Zeichenlänge mit Faktor nn/10
>nn Division der Zeichenlänge mit Faktor nn/10
Da die Definitionsgleichungen in der Form F = f(F,+,-,[,],/,\,<,>,|,! ) gegeben werden, entsteht eine rekursive Vorschrift. Eine höhere Rechentiefe bewirkt ein immer stärkeres Ausbilden der Fraktalform.
Die Festlegung des Drehwinkels erfolgt in ganzzahligen Werten, z.B. Winkel = 60°.
z.B.
Regelmenge R={S --> F--F--F, F --> F+F--F+F}, S ist Startregel
Dann ergibt sich:
Stufe 0 ergibt F--F--F
Stufe 1 ergibt F+F--F+F--F+F--F+F--F+F--F+F
Stufe 2 ergibt
F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F--
F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F
Stufe 3 ergibt
F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F+F+F--F+F+F+F--F+F--
F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F+F+F--
F+F+F+F--F+F--F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F--F+F--F+F+F+F--
F+F+F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F--F+F--
F+F+F+F--F+F+F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F--F+F--F+F+F+F--
F+F--F+F--F+F+F+F--F+F+F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F--F+F--
F+F+F+F--F+F--F+F--F+F+F+F--F+F+F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F
erweitertes L-System
Die Definition eines Fraktals des L-Systems ist auch über die Festlegung eines Axioms (Startregel) und mehrerer Ersetzungsregeln möglich. Damit können noch interessantere Gebilde graphisch erzeugt werden.
Zum Beispiel definiert man ein Axiom in Abhängigkeit von F,G sowie X und Y und gibt Regeln für alle Größen an. Soll die nach Hilbert bezeichnete Kurve gezeichnet werden, setzt man:
Axiom Y
F = F
X = -YF+XFX+FY-
Y = +XF-YFY-FX+
Im Ergebnis erhält man die Hilbert-Kurve (Tiefe = 4, Winkel = 90°)
Betrachtet man die Kochkurve z.B. für 1 und 2 Iterationen, so stellt man fest, dass Teile der Kurve 2 durch lineare Verkleinerung um 1 : 3 aus der Kurve 1 hervorgehen, d.h. die Längen stehen im Verhältnis a / a‘ = 1 : 3. Anderseits müssen 4 Streckenzüge hinzugefügt werden, um aus Kurve 1 die Kurve 2 zu erhalten, d.h. die Flächeninhalte verhalten sich wie F / F‘ = 1 : 4. Nach der allgemeinen Definition der Dimension eines Gebildes (Fläche, Raum,...) erhält man
n = log(F‘/ F) : log(a‘/ a) = log 4 : log 3 = 1,261859...
und damit ein geometrisches Gebilde mit einer nicht ganzzahligen Dimension, eben ein Fraktal.
Im Menue Datei können Grammatiken geladen und gespeichert werden,
Zeichnungen können markiert (linke Maustaste) und in die Zwischenablage kopiert werden.
Über Neu können neue Regeln definiert werden, in der Planung solcher Regeln hat es sich als hilfreich herausgestellt, mit Papier und Bleistift die Stufen 0 und 1 sich zu überlegen.
Beim Programmstart werden aus den Ordnern Kurven-Definitionen--> L-Systeme bzw. --> L2-Systeme alle gespeicherten Definitionsdateien im Menue eingefügt.
Unter Option kann der erzeugte String angezeigt werden, der anschließend interpretiert wird.
Bei einer hohen Tiefe kann die Berechnung länger dauern, Abbruch mit <ESC>!
Viel Spaß beim Experimentieren
Fiete