image image


image

Koch-Kurve und -Schneeflocke in Processing.py

Nachdem ich gestern erfolgreich die Kochsche Schneeflocke in TigerJython implementiert hatte, hatte es sich geradezu angeboten, dasselbe auch noch mit Processing.py und Leah Buechleys Turtle-Bibliothek zu versuchen. Dafür habe ich zuerst Processing.py einfach die Koch-Kurve zeichen lassen (siehe Banner):

add_library('Turtle')

# Konstanten-Deklaration
WIDTH = 400
HEIGHT = 200
it = 4          # Iterationstiefe

def setup():
    global koch
    size(WIDTH, HEIGHT)
    this.surface.setTitle("Koch-Kurve")
    background(232, 226, 7)
    koch = Turtle(this)
    noLoop()

def draw():
    koch.penUp()
    koch.goToPoint(40, 140)
    stroke(200, 23, 223)
    koch.penDown()
    koch.right(90)
    kochkurve(400, it)
    print("I did it, Babe!")

def kochkurve(length, d):
    if d == 0:
        koch.forward(length)
    else:
        kochkurve(length/3, d-1)
        koch.left(60)
        kochkurve(length/3, d-1)
        koch.right(120)
        kochkurve(length/3, d-1)
        koch.left(60)
        kochkurve(length/3, d-1)

Hier zeigte sich schon, daß nahezu der einzige Unterschied zu TigerJython (und zu (C) Pythons Turtle-Modul) das andere Koordinatensystem ist. Während in TigerJython die Bibliotheken GTurtle, GPanel und GameGrid jeweils mit einem eigenen Koordinatensystem daherkommen, wollte Leah Buechley, daß ihre Schildkröte innerhalb des gewohnten Koordinatensystem der Wirtsumgebung funktioniert. Und das ist (per Default) die linke obere Ecke mit den Koordinaten (0, 0).

image

Ansonsten unterscheidet sich der Code kaum von der TigerJython-Version:

add_library('Turtle')

# Konstanten-Deklaration
WIDTH = 400
HEIGHT = 400

colors = [color(18, 184, 116), color(200, 23, 223),
          color(95, 145, 40), color(8, 124, 127)]

seiten = 4      # Anzahl der Seiten der Schneeflocke,
                # entweder 3 oder 4
it = 5          # Iterationstiefe

def setup():
    global koch
    size(WIDTH, HEIGHT)
    this.surface.setTitle("Kochsche Schneeflocke")
    background(232, 226, 7)
    koch = Turtle(this)
    noLoop()

def draw():
    koch.penUp()
    koch.goToPoint(80, 320)
    koch.penDown()
    # koch.right(90)
    schneeflocke(400, it)
    print("I did it, Babe!")

def kochkurve(length, d):
    if d == 0:
        koch.forward(length)
    else:
        kochkurve(length/3, d-1)
        koch.left(60)
        kochkurve(length/3, d-1)
        koch.right(120)
        kochkurve(length/3, d-1)
        koch.left(60)
        kochkurve(length/3, d-1)

def schneeflocke(length, d):
    for i in range(seiten):
        stroke(colors[i%4])
        kochkurve(length, d)
        koch.right(360/seiten)

Als Hommage an Leah Buechley habe ich die nach ihr benannte Farbpalette verwendet, denn quietschebunt sind doch auch schöne Farben. 🤓


(Kommentieren) 

image image



Ü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!


Werbung


image  image  image
image  image  image


image