Über Lindenmayer- oder L-Systeme hatte ich vor genau einem Monat geschrieben. Damals hatte ich das Sierpinski-Dreieck in Processing.py implementiert, ohne das Turtle-Modul zu kennen. Entsprechend komplex fiel die plot()
-Funktion damals aus. Nun hatte ich Lust, wieder etwas mit einem L-System anzustellen, dieses Mal wollte ich jedoch das Turtle-Modul für Processing.py verwenden.
Axiom und Produktionsregeln für obigen Busch hat Aristid Lindenmayer in seinem zusammen mit Przemyslaw Prusinkiewicz 1990 herausgegebenem Buch »The Algorithmic Beauty of Plants« auf Seite 25 beschrieben. Der Busch hat das Axiom F
und die Produktionsregel F -> FF-[-F+F+F]+[+F-F-F]
. Die Rekursionstiefe beträgt n = 4
und der Winkel 𝛿 = 22.5°
.
Was bedeuten nun die Symbole der Produktionsregel für die Turtle. Eigentlich ganz einfach:
Für die beiden letzten Symbole hat Leah Buechley in ihrem Turtle-Modul netterweise die Funktionen push()
und pop()
implementiert, so daß der Quellcode für das Zeichnen des Busches (Funktion plot() im Quellcode)
entsprechend kompakt ausfällt:
add_library('Turtle') import math num_gen = 4 len_seg = 6 a = 22.5 # Winkel axiom = "F" sentence = axiom rules = {"F": "FF-[-F+F+F]+[+F-F-F]"} def setup(): global p size(400, 400) this.surface.setTitle("Lindenmayer Tree 1") background(50) strokeWeight(1) stroke(150, 255, 100) p = Turtle(this) generate(num_gen) noLoop() def draw(): p.penUp() p.goToPoint(width/2, height - 20) p.penDown() plot(p) print("I did it, Babe") def generate(n): global sentence for i in range(n): next_sentence = "" for c in sentence: next_sentence += rules.get(c, c) sentence = next_sentence def plot(p): for c in sentence: if c == "F": p.forward(len_seg) elif c == "+": p.right(a) elif c == "-": p.left(a) elif c == "[": p.push() elif c == "]": p.pop()
Ich glaube, das war es erst einmal mit der Turtle. Ich wollte mich ja auch noch JavaScript (P5.js) und Pygame zuwenden. So viel zu spielen und so wenig Zeit!
Über …
Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!
Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.
Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.
Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes
von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.
Werbung
Diese Spalte wurde absichtlich leergelassen!