image image


image

Re-enactment: Hommage an Piet Mondrian mit Processing.py

Meine Idee, mit Generative Art auf Papier dem derzeit grassierenden NFT-Hype den Stinkefinger zu zeigen, hat mir – zusammen mit der Tatsache, daß mein Processing.py jetzt wieder mit Processing 4 spielt – keine Ruhe gelassen. Und so habe ich mich gestern abend hingesetzt und eine kleine Hommage an Piet Mondrian programmiert.

Die Idee dazu kam aus diesem Aufsatz »Explore Recursion with Processing«, allerdings mußte ich den dort veröffentlichten Code für meinen Port nach Python doch gewaltig anpassen, bis er für mich zufriedenstellend lief:

from random import randint

WIDTH, HEIGHT = 800, 600
n  = 2     # Rekursionstiefe
sw = 3     # Stroke Weight

# Farbpalette

mondrian2 = [color(38, 71, 124), color(240, 217, 92), color(162, 45, 40),
             color(223, 224, 236), color(223, 224, 236)]

def mondrian(x0, y0, x1, y1, n):
    if n == 0:
        fill(mondrian2[randint(0, len(mondrian2) - 1)])
        strokeWeight(sw)
        rect(x0, y0, x1 - x0 - sw, y1 - y0 - sw)
    else:
        x = randint(x0, x1)
        y = randint(y0, y1)
        mondrian(x0, y0, x, y, n - 1)  # Rechteck links oben
        mondrian(x, y0, x1, y, n - 1)  # Rechteck rechts oben
        mondrian(x0, y, x, y1, n - 1)  # Rechteck links unten
        mondrian(x, y, x1, y1, n - 1)  # Rechteck rechts unten

def setup():
    global ready
    size(WIDTH, HEIGHT)
    this.windowTitle("Hommage an Piet Mondrian")
    this.windowMove(1400, 30)
    background(223, 224, 236)
    mondrian(1, 1, width, height, n)
    ready = False

def draw():
    global ready
    if ready:
        mondrian(1, 1, width, height, n)
        ready = False

def mousePressed():
    global ready
    ready = True

Zum einen habe ich die Farbpalette Mondrian 2 von Eric Davidson benutzt, da die reinen Farben mir doch ein wenig zu »knallig« erschienen. Und zum anderen habe ich den Flag ready eingeführt, da zumindestens unter macOS Key- und Mouse-Events sich wiederholen, wenn man die Tasten nicht sofort wieder los läßt. Daher sorgt der Flag dafür, daß nach dem ersten Maustastendruck das Event nicht mehr ausgelöst wird.

Zum dritten ist der Zufall eine zickige Muse: Nicht jedes Ergebnis sieht zufriedenstellend aus und so habe ich doch etliche Klicks benötigt, bis ich das Resultat würdig für eine Veröffentlichung fand. Perfektionisten können ja noch die Funktion

def keyPressed():
    if key == "S" or key == "s":
        saveFrame("mondrian-#####.png")

anhängen, um jedesmal, wenn die Taste S oder s gedrückt wird, ein durchnumeriertes Bild abzuspeichern. So wird die Generierung generativer Bildchen wie bei NFTs (halb-) automatisiert. 🤓

Und wer ein hochauflösendes PDF für den Druck benötigt, kann ja die Library PDF Export einsetzen (habe ich noch nicht mit Processing 4 getestet).


(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