Ersetzungsregeln für Lindenmayer-Systeme zum Python Programm: https://www.sqrt.ch/Buch/lindenmayer.py Martin AMBAUEN, 2022 ------------------------------------------------------------ # Kochstern, w = 60 rules = ["AB+AB+AB+AB+AB+AB+", "", "-ACAD++AEAC-", "AC-ACAD++AEAC-AC", "-AC-ACAD++AEACAD++AEAC-AC-", "--ACAD++AEACAD++AEAC-AC-"] # "AB+" reicht in der rule0 bereits aus, Rest im SVG durch Rotationskopien darstellen # Quadratische Gosperkurve, w = 90 rules = ["-BF", "AFA-BF-BF+FA+FA-BF-BFFA+BF+FAFABF-FA+BF+FAFA+BF-FABF-BF-FA+FA+BFBF-", "+FAFA-BF-BF+FA+FABF+FA-BFBF-FA-BF+FABFBF-FA-BFFA+FA+BF-BF-FA+FA+BFB", "", "", ""] # Einfache Bäume rules = ["A", "A[+A]A[-A]A", "", "", "", ""] # w = 30 # rules = ["A", "B[+A][-A]BA", "BB", "", "", ""] # w = 25.7 # Hilbert Polygonzug, w = 90, A und B NICHT zeichnen # Ersetze in keys A, und B: "myTurtle.goForward(size)" durch "None" rules = ["A", "-BF+AFA+FB-", "+AF-BFB-FA+", "", "", ""] # Sierpinski Dreieck, w = 120 rules = ["A-B-B", "A-B+A+B-A", "BB", "", "", ""] # Sierpinski Polygonzug Dreieck w = 60 rules = ["A", "B-A-B", "A+B+A", "", "", ""] # Sierpinski-Polygonzug im quadratischen Gitter, w = 90 rules = ["F+A+F+A", "A-F+F-A+F+A-F+F-A", "", "", "", ""] # Sierpinski Teppich, w = 90 # Ersetze in key B: "myTurtle.goForward(size)" durch "myTurtle.moveTo(size)" rules = ["A", "A+A-A-AA-A-A-BA", "BBB", "", "", ""] # Kochvarianten quadratisch, w = 90 # rules = ["A+A+A+A", "AA+A+A+A+AA", "", "", "", ""] # rules = ["A+A+A+A", "AA+A++A+A", "", "", "", ""] # rules = ["A+A+A+A", "AA+A+A+A+A+A-A", "", "", "", ""] rules = ["F+AF+F+AF", "AF-F+F-AF+F+AF-F+F-A", "", "", "", ""] # Koch-Pentagon aus Pentagons, w = 36 rules = ["A++A++A++A++A", "A++A++A+++++A-A++A", "", "", "", ""] # geschlossener Pfad, Szilard 1979, w = 60 rules = ["AF+FF+AF+FF+AF+FF", "AF+FF+AF-FF-FF-AF-FF+FF+FF-FF+FF+FF-A", "", "", "", ""] # Lévy-C-Kurve, w = 45 rules = ["A", "+A--A+", "", "", "", ""] # Peano Pfad I, ausgefranst, w = 30 rules = ["A", "++BA---A---B+++A+", "-B---A+++B+++BA--", "", "", ""] # Peano Pfad II, quasi rund, w = 11.25, w0 = -22.5, A, B und C NICHT zeichnen # Ersetze in keys A, B und C: "myTurtle.goForward(size)" durch "None" rules = ["++FA", "A-BA+CA+CA+CA-BA-BA-BA+CA", "F-F-F-F-F-F-F-F", "F+F+F+F+F+F+F+F", "", ""] # Mandelbrot Insel-Landschaft, w = 90 # Ersetze in key B "myTurtle.goForward(size)" durch "myTurtle.moveTo(size)" rules = ["A+A+A+A+A", "A+B-AA+A+AA+AB+AA-B+AA-A-AA-AB-AAA", "ffffff", "", "", ""] # William McWorter's Pentadendrit, w = 72 rules = ["A-A-A-A-A", "A-A-A++A+A-A", "", "", "", ""] # Penrose Tiling, w = 36 rules = ["[B]++[B]++[B]++[B]++[B]", "CE++DE----BE[-CE----AE]++", "+CE--DE[---AE--BE]+", "-AE++BE[+++CE++DE]-", "--CE++++AE[+DE++++BE]--BE", ""] ------------------------------------------------------------ Buchstaben "A" bis "E": Ersetzungsregeln; wird im Endergebnis als "F" übersetzt (Standard) "-": drehe um Winkel w "+": drehe um Winkel -w '|': drehe um 180° "F": bewege dich um eine Länge vorwärts und zeichne dabei eine Strecke "f": bewege dich um eine Länge vorwärts "R": bewege dich um eine Länge rückwärts und zeichne dabei eine Strecke "r": bewege dich um eine Länge rückwärts "[": speichere die aktuelle Position "]": schreibe die zuletzt gespeicherte Position und lösche sie im Speicher Bemerkung "A" bis "E" sind Variablen, "F" z.B. eine Konstante, welche nicht ersetzt wird.