Informatik

Tiled Lines

Wir starten mit einem der ersten und zugleich einfachsten programmierten Kunstwerke. Auf dem Commodore 64, einem Heimcomputer aus dem Jahr 1982, passt es in eine einzige Zeile:

10 PRINT CHR$(205.5+RND(1)); : GOTO 10

Das Programm schreibt immer wieder zufällig eines von zwei Zeichen auf den Bildschirm: einen Schrägstrich nach rechts ╲ oder einen nach links ╱. Heraus kommt ein Labyrinth, das niemand geplant hat. Über diese eine Zeile gibt es sogar ein ganzes Buch – es heißt, natürlich, 10 PRINT.

Eine Linie

Der Stift kennt nur setPosition, down und up. Für eine einzelne Linie von A nach B braucht man davon gleich vier Anweisungen. Weil wir in diesem Projekt Tausende Linien ziehen, packen wir die vier in eine Methode linie – die wirst du auf jeder Seite wiedersehen.

a) Ergänze eine zweite Linie, sodass ein großes X entsteht.

b) Zeichne mit vier Aufrufen von linie einen Rahmen um die ganze Leinwand, 10 Bildpunkte vom Rand entfernt.

Tipp zu b)

Die Leinwand reicht von −200 bis 200. 10 Bildpunkte weiter innen liegen also die Werte −190 und 190. Die linke untere Ecke ist (−190, −190).

Der Zufall entscheidet

Jetzt bekommt jede Zelle ihren Schrägstrich. Die Methode zeichne bekommt die linke untere Ecke einer Zelle und ihre Größe. Dann wirft sie eine Münze: Math.random() liefert eine Zufallszahl zwischen 0 und 1. Ist sie mindestens 0,5, geht der Strich von links unten nach rechts oben, sonst von rechts unten nach links oben.

flowchart LR
    A["Math.random() >= 0.5 ?"] -- ja --> B["╱<br>(x, y) nach (x + breite, y + hoehe)"]
    A -- nein --> C["╲<br>(x + breite, y) nach (x, y + hoehe)"]

Damit die ganze Leinwand voll wird, laufen zwei geschachtelte Schleifen über alle Zellen: die äußere von links nach rechts, die innere von unten nach oben.

a) Starte das Programm mehrmals. Das Bild ist jedes Mal anders – woran erkennst du trotzdem, dass es immer dasselbe Kunstwerk ist?

b) Ändere die Konstante SCHRITT auf 10, 40 und 100. Ab wann ist das Labyrinth kein Labyrinth mehr?

c) Wie viele Linien zeichnet das Programm bei SCHRITT = 20? Rechne es zuerst aus, bevor du nachzählst.

d) Ersetze 0.5 durch 0.9. Beschreibe, was passiert, und erkläre warum.

Tipp zu c)

Die äußere Schleife läuft von −200 bis 180 in Schritten von 20. Wie oft ist das? Die innere läuft genauso oft – und zwar bei jedem Durchlauf der äußeren.

Weiterspielen

Verlauf. Lass die Wahrscheinlichkeit von links nach rechts wandern: Ganz links sind fast alle Striche ╱, ganz rechts fast alle ╲. In der Mitte herrscht das Labyrinth.

Statt der festen 0.5 brauchst du eine Zahl, die von pX abhängt. Für pX = −200 soll sie nahe 0 sein, für pX = 180 nahe 1.

Drei Möglichkeiten. Erlaube neben den beiden Schrägstrichen eine dritte Möglichkeit: einen waagerechten Strich durch die Mitte der Zelle. Wie musst du die Zufallszahl aufteilen, damit alle drei gleich oft vorkommen?

Farbe. Gib den beiden Richtungen verschiedene Farben. Oder: Lass die Farbe mit der Höhe in der Leinwand langsam von Blau nach Rot wechseln.

stift.setColor(r, g, b) darfst du vor jeder Linie neu aufrufen.

Truchet-Kacheln. Ersetze den Strich durch zwei Viertelkreise, die in gegenüberliegenden Ecken der Zelle sitzen. Solche Muster heißen Truchet-Kacheln – nach dem französischen Mönch Sébastien Truchet, der 1704 als Erster untersucht hat, was man mit zufällig gedrehten Kacheln legen kann.

Einen Viertelkreis zeichnest du wie einen ganzen Kreis aus vielen kurzen Linien – nur mit einem Viertel der Winkel. Wie man einen Kreis aus Linien baut, steht auf der Seite Circle Packing.


Nach dem Tutorial Tiled Lines von Generative Artistry.

Tiled Lines

Teilbare URL erstellen

Abschnitte auswählen