/* AlgoDat WS99 Belegaufgabe 8 Christian Semrau, http://chsemrau.de Datei mit vorgegebenen Lindenmayer-Systemen lsystem/lsystems.txt Christian Semrau Format der LSysteme: (Name, Axiom, Formeln, Winkel, Tiefe, Startwinkel) Formeln hat die Syntax: Axiom:Regel; Axiom:Regel; ... Leerzeilen und Zeilen, die mit # beginnen, werden ignoriert, nach dem # sollte ein Leerzeichen folgen (Erweiterbarkeit des Formats). Zeilen, die mit #[ beginnen, bezeichnen Gruppierungen fuer die LSysteme. Block-Kommentare beginnen mit einer Zeile, die mit /* beginnt, und enden mit einer Zeile, die mit */ endet, diese Kommentare koennen geschachtelt werden. */ #[Vorgaben] # Kurven aus Belegaufgabe 3 (quadratische Kochkurve, F, F:F-F+F+F-F; , 90, 3, 0) (Baumkurve, F, F:[-G][+G]; G:H<50[+G][-G];, 45, 7, -90) (Drachenkurve, F, F:F+G; G:F-G;, 90, 12, 0) (Hilbertkurve1 ,X, X:-YF+XFX+FY-; Y:+XF-YFY-FX+;, 90, 4, 0) # Abbildung mit den Baeumen (Baum2, X, X:F-[X][+X]+F[+FX]-X; F:FF;, 22, 6, -90) (Baum2Gruppe, L, L:LF[/90X]F; X:F-[X][+X]+F[+FX]-X; F:FF;, 22, 6, 0) # vorgegebene Kurven aus Aufgabe 8 (Koch-Kurve, F, F:F-F++F-F; , 60, 5, 0) (Busch1, F, F:FF-[-F+F+F]+[+F-F-F];, 22.5, 4, -70) # weitere LSysteme aus dem AlgoDat-Forum (hexagonale Gosper-Kurve, F, F:F+G++G-F--FF-G+; G:-F+GG++G+F--F-G;, 60, 4, 0) (Sierpinski2, F, F:G+F+G; G:F-G-F;, 60, 6, 0) #[Natur] (Baum1, F, F:H[-<30F>30][+<40F-F>40];, 25, 7, -90) (Busch1Gruppe, G, F:FF-[-F+F+F]+[+F-F-F]; G:GH[/90F]H; H:HH;, 22.5, 5, 0) (Busch2, F, F:FF[+F-F][-F];, 30, 6, 150) (Farn, F, F:H<60[-!F!][+F]\05>40F;, 70, 8, -60) (5-eckige Schneeflocke, G, G:F++F++F++F++F; F:F---F++F++F++F---F;, 36, 5, 0) #[Fraktale] (Koch-Insel, F, F:G++G++G; G:G-G++G-G; , 60, 5, 0) # mein erster Ansatz der Hilbertkurve, noch ohne X-Regel (Hilbertkurve2, F, F:-!1F0!H+1F0H1F0+H!1F0!-; , 90, 4, 0) # die zweite Version, mit X-Regel (Hilbertkurve2a, X, X:-!X!F+XFX+F!X!-; , 90, 4, 0) (Sierpinski1, F, F:F[-F]F[-F]; , 120, 7, 0) # liefert das gleiche Ergebnis wie Sierpinski2 # mit nur einer Regel und einem zusaetzlichen Kommando "!" (Sierpinski2a,F, F:!F!+F+!F!; , 60, 6, 0) # einfache Regel, zeichnet aber zuviel # liefert fuer viele Winkel gute Ergebnisse (Sierpinski3, F, F:[-!F!]FF[_+F]; , 60, 7, 0) # komplexer, zeichnet aber keine Linie zuviel # sieht genauso aus wie Sierpinski3 (Sierpinski3a, F, F:[-!G!]GH[_+G]; G:GH[_+G]; H:[-!G!]GH;, 60.0, 7, 0.0) # mehr Regeln, dafuer nur noch "Standard-Kommandos" # stimmt nur bei 60 Grad mit Sierpinski3 ueberein (Sierpinski3b, F, F:[-I]G; G:GH[--G]; H:[-I]GH; I:IJ[++I]; J:[+G]IJ;, 60.0, 5, 0.0) # komplett anderer Ansatz, zeichnet nicht zuviel (Sierpinski3c, F, "F:G--H--H; G:G[-H--!G!--H]G; H:HH; ", 60.0, 4, 0.0) # gleiche Formel wie Sierpinski3, nur anderer Winkel (Gitter, F, F:[-!F!]FF[_+F];, 45, 7, 0) #[Spielereien] # wie der Name schon sagt ;) (Spirale 3, F, F:G+<03F; , 121, 150, 0) (Spirale 3a,F, F:G+<03F+G; , 121, 180, 0) (Spirale 4, F, F:G+<02F; , 91.2f, 250, 0) (Spirale 5, F, F:G+<01F; , 72.8f, 500, 0) (Spirale 6, F, F:G+<01F; , 61.1f, 500, 0) (Spirale 7, F, F:G+<01F; , 52.8f, 500, 0) (Spirale 8, F, F:G+<01G+F; , 45.7f, 500, 0) (Puzzle, F, F:F+!F-!F-F;, 60, 5, 0) (Allee, F, F:[_/10!H!][\10H]; H:<30HA>30 [/80/20I]A; I:A[-<30I>30][+<40I-I>40];, # F = Linke Seite, Rechte Seite # H = Baumreihe # I = Baum, A = A 25, 8, 0) (Allee mit Sonne, F, F:<15[_/12!G!][\12G]>15 [/90(A)/90<90\06 J >90] [_/10!H!][\10H]; G:<30GA>30A; H:<30HA>30 [/80/20I]A; I:A[-<30I>30][+<40I-I>40]; J:J\12J;, 25, 8, 0) # F = Linker Rand, Rechter Rand, Sonne, Linke Seite, Rechte Seite # G = Strassenrand # H = Baumreihe # I = Baum # J = Sonne, A = A (Chaotisch, F, F:F+<80F;, 10, 12, -40) # Was sein muss, muss sein! Kleine Demo der Turtle-Grafik. (Nikolaus-Haus, G, G:--F++F++F++F+++<29FF--F--F--FF-; , 45, 1, 0)