Informatik

Cubic Disarray

Georg Nees (1926–2016) gehört zu den ersten Menschen überhaupt, die mit einem Computer Kunst gemacht haben. Er arbeitete bei Siemens in Erlangen und ließ seine Programme von einem Zeichentisch mit Stift ausführen. Sein bekanntestes Bild heißt Schotter: Oben liegen Quadrate ordentlich in Reih und Glied, nach unten hin geraten sie immer mehr durcheinander – als würde ein Mauerwerk zerfallen.

Genau das bauen wir nach. Die eigentliche Arbeit steckt darin, ein Quadrat zu drehen – denn der Stift kennt keine Drehung.

Vorwissen: verschachtelte Schleifen, Methoden mit Rückgabewert und eindimensionale Felder. Sinus und Kosinus solltest du schon einmal gehört haben – mehr nicht.

Einen Punkt drehen

Ein Quadrat mit der Mitte (0, 0) und der Seitenlänge 2·h hat die Ecken (−h, −h), (h, −h), (h, h) und (−h, h). Drehen wir es um einen Winkel w, wandert jede Ecke (x, y) an eine neue Stelle (x', y'):

Drehung um den Ursprung um den Winkel w (gegen den Uhrzeigersinn):

  • x' = x · cos(w) − y · sin(w)
  • y' = x · sin(w) + y · cos(w)

Math.sin und Math.cos erwarten den Winkel im Bogenmaß, nicht in Grad. Math.toRadians(30) rechnet 30° ins Bogenmaß um.

Woher die Formel kommt, lernst du in der Oberstufe in Mathematik. Hier reicht es, sie zu benutzen. Liegt die Mitte des Quadrats nicht bei (0, 0), sondern bei (mx, my), drehen wir zuerst um den Ursprung und verschieben danach: Wir zählen mx und my einfach dazu.

a) Die Felder ex und ey haben fünf Einträge, obwohl ein Quadrat nur vier Ecken hat. Warum?

b) Setze WINKEL auf 45, 90 und −20. Sage vorher, was du siehst.

c) Zeichne mit einer Schleife 18 Quadrate um dieselbe Mitte, jedes um 5° weiter gedreht als das vorige.

d) Zeichne ein gedrehtes Quadrat mit der Mitte (100, 100). Es soll sich um seine eigene Mitte drehen, nicht um die Mitte der Leinwand.

Tipp zu a)

Der Stift fährt die Ecken nacheinander ab. Was passiert, wenn er nach der vierten Ecke aufhört?

Ordnung, die zerfällt

Jetzt legen wir 12 × 12 Quadrate in ein Gitter. Jede Zeile bekommt einen Wert unordnung zwischen 0 (oberste Zeile) und 1 (unterste Zeile). Mit diesem Wert werden zwei Zufallszahlen multipliziert:

  • die Drehung, höchstens MAX_DREHUNG Grad,
  • der Versatz nach links oder rechts, höchstens MAX_VERSATZ Bildpunkte.

Oben ist unordnung 0, also bleibt dort alles gerade. Unten kann es bis zum Höchstwert gehen. Ob nach links oder rechts, entscheidet ein zufälliges Vorzeichen.

a) Warum steht in der Berechnung von unordnung ein (double)? Lass es weg und starte das Programm.

b) Setze MAX_DREHUNG auf 90 und MAX_VERSATZ auf 0. Und dann umgekehrt.

c) Ändere die Berechnung von unordnung so, dass das Chaos oben liegt und die Ordnung unten.

d) Die Mitte des ersten Quadrats liegt bei −165. Wie kommt diese Zahl zustande?

Tipp zu a)

zeile und ANZAHL - 1 sind beide int. Was ergibt 5 / 11 in Java, wenn beide Zahlen ganzzahlig sind?

Tipp zu d)

12 Quadrate mit je 30 Bildpunkten sind zusammen 360 breit. Die Leinwand ist 400 breit. Wie viel bleibt links übrig, wenn das Gitter mittig liegt? Und wo liegt dann die Mitte des ersten Quadrats?

Weiterspielen

Von der Mitte aus. Lass die Unordnung nicht von oben nach unten wachsen, sondern von der Mitte nach außen. In der Mitte liegen die Quadrate gerade, an den Rändern fliegen sie auseinander.

Die Unordnung hängt jetzt vom Abstand zur Mitte der Leinwand ab. Den größten möglichen Abstand brauchst du, damit am Ende eine Zahl zwischen 0 und 1 herauskommt.

Schotter in Farbe. Färbe die Quadrate je nach Drehung: gerade Quadrate grau, stark gedrehte rot.

Andere Formen. Ersetze das Quadrat durch ein Dreieck oder ein Sechseck. Dafür musst du nur die Felder ex und ey ändern.

Die Ecken eines regelmäßigen n-Ecks liegen auf einem Kreis. Ecke k hat den Winkel k · 360° / n.


Nach dem Tutorial Cubic Disarray von Generative Artistry.

Cubic Disarray

Teilbare URL erstellen

Abschnitte auswählen