Generative Kunst
Ziel
Bei generativer Kunst malt nicht der Mensch das Bild, sondern er schreibt die Regeln, nach denen ein Programm es malt. Meist steckt in den Regeln ein bisschen Zufall – deshalb sieht jedes Bild anders aus, obwohl alle aus demselben Programm stammen.
Das klingt nach etwas Neuem, ist aber älter als der Heimcomputer. In den 1960er Jahren haben Leute wie Georg Nees und Vera Molnár Großrechner mit Zeichenmaschinen verbunden und so die ersten Computerbilder geschaffen. In diesem Projekt baust du neun berühmte Werke nach – vom Ein-Zeilen-Programm auf dem Commodore 64 bis zu einem Jahreskalender aus Sonnenuntergängen.
Grundlage ist die Webseite Generative Artistry
von Tim Holman. Dort sind die Tutorials in JavaScript
geschrieben. Hier übersetzen wir sie nach Java und zeichnen mit dem Stift
(Pen) aus Scratch for Java – direkt im Browser.
Fühle dich frei, in jedes Werk deine eigenen Ideen einfließen zu lassen. Die Seiten sind eine Orientierungshilfe, keine strenge Vorschrift. Am Ende jeder Seite stehen Ideen, wie du das Bild weitertreiben kannst – dazu gibt es keine Musterlösung, denn es gibt kein richtiges Ergebnis.
Vorwissen
Du solltest programmieren können, was im Lernpfad Grundlagen der Programmierung mit Java steht. Die ersten Werke brauchen nur Schleifen und Methoden, die späteren mehr. Jede Seite sagt dir am Anfang, was du kennen solltest:
| Werk | Das brauchst du |
|---|---|
| Tiled Lines | verschachtelte Schleifen, Methoden |
| Joy Division | zweidimensionale Felder |
| Cubic Disarray | Methoden mit Rückgabewert, ein wenig Trigonometrie |
| Triangular Mesh | zweidimensionale Felder, Objekte |
| Un Deux Trois | eindimensionale Felder als Parameter |
| Circle Packing | eigene Klassen, Felder von Objekten |
| Hypnotic Squares | Rekursion |
| Piet Mondrian | eigene Klassen, Felder von Objekten |
| Hours of Dark | Schleifen, Trigonometrie |
Die Seiten bauen nicht aufeinander auf. Nur zwei Dinge lernst du einmal und
benutzt sie danach immer wieder: die Methode linie auf der ersten Seite und
das Drehen eines Punktes auf der Seite Cubic Disarray.
So arbeitest du damit
- Alle Programmierbereiche laufen im Browser. Du musst nichts installieren.
- Jeder Bereich enthält das vollständige Programm. Du kannst darin herumändern, ohne etwas kaputtzumachen – ein Neuladen der Seite stellt den Ursprung wieder her.
- Gestartet wird mit dem kleinen Pfeil neben
Main.javain der Dateiliste links. - Starte ein Programm mehrmals. Weil Zufall im Spiel ist, entsteht jedes Mal ein neues Bild.
- Die Einstellungen eines Bildes stehen als Konstanten in GROSSBUCHSTABEN ganz oben in der Klasse. Dreh daran!
Die Leinwand
Alle Bilder entstehen auf einer quadratischen Bühne mit 400 × 400 Bildpunkten. Wie immer bei Scratch for Java liegt der Punkt (0, 0) in der Mitte, die x-Achse zeigt nach rechts und die y-Achse nach oben. Die Leinwand reicht also von −200 bis 200 – in beide Richtungen.
void main() {
Window fenster = new Window(400, 400);
fenster.setStage(new TiledLines());
}
new Window(400, 400) legt die Größe fest, setStage stellt das Kunstwerk
hinein. Das Kunstwerk selbst ist eine Unterklasse von Stage und zeichnet im
Konstruktor.
Die Werke
| Seite | Darum geht es |
|---|---|
| Tiled Lines | Ein Gitter aus Schrägstrichen – das berühmte „10 PRINT“ |
| Joy Division | Gebirge aus Linien wie auf dem Plattencover „Unknown Pleasures“ |
| Cubic Disarray | Ordnung, die nach unten hin zerfällt – nach Georg Nees |
| Triangular Mesh | Ein Netz aus grauen Dreiecken |
| Un Deux Trois | Ein, zwei, drei Striche in jeder Zelle – nach Vera Molnár |
| Circle Packing | Kreise, die wachsen, bis sie anstoßen |
| Hypnotic Squares | Quadrate in Quadraten in Quadraten – nach William Kolomyjec |
| Piet Mondrian | Rechtecke teilen und einfärben |
| Hours of Dark | Ein Jahr Dunkelheit als Bild |
Warum füllt der Stift keine Flächen? Der Pen kann nur Linien ziehen.
Eine Fläche entsteht deshalb so, wie man sie auch mit einem Filzstift ausmalt:
aus vielen Linien dicht nebeneinander. Auf den Seiten
Joy Division, Triangular Mesh und
Piet Mondrian siehst du, wie das geht.