Dieses Werk verbindet drei Strömungen der konzeptuellen und generativen Kunst
und überträgt sie in den nichteuklidischen Raum der hyperbolischen Geometrie.
Künstlerische Einordnung
Sol LeWitt (1928–2007)
Begründer der Instruktionskunst. LeWitts berühmte "Wall Drawings"
bestehen aus geschriebenen Anweisungen, die von anderen ausgeführt werden.
Das Konzept ist das Werk; die Ausführung ist sekundär. In diesem Programm
liefert der Regelcode – Regel 110, Regel 30, Game of Life – die
Instruktion, die der Computer Pixel für Pixel ausführt.
Vera Molnár (1924–2023)
Pionierin der algorithmischen Computerkunst. Sie schuf geometrische
Kompositionen, in denen strenge mathematische Formen (Quadrate, Linien,
Kreise) durch minimale Variationen lebendig werden. Das hyperbolische
Gitter ist eine Hommage an Molnárs Suche nach Schönheit im Algorithmus.
Casey Reas (geb. 1972)
Mitgründer von Processing. Seine Process-Serien visualisieren
Software als endlosen, niemals identischen Zustandsautomaten – die
Maschine selbst als Künstler. Wir übertragen Reas' Konzept in die
hyperbolische Krümmung.
Hyperbolische Geometrie
In der euklidischen Geometrie gilt das Parallelenaxiom: Durch einen Punkt
außerhalb einer Geraden gibt es genau eine Parallele. In der hyperbolischen
Geometrie gibt es unendlich viele Parallelen – der Raum
ist negativ gekrümmt. Die Winkelsumme eines Dreiecks ist kleiner als 180°.
Wir verwenden das Poincaré-Halbebenenmodell: Die obere Halbebene
\( H = \{z \in \mathbb{C} : \operatorname{Im}(z) > 0\} \) wird über die
Cayley-Transformation auf die Einheitskreisscheibe
abgebildet.
Geraden in der Halbebene (vertikale Halbgeraden und Halbkreise mit
Mittelpunkt auf der reellen Achse) werden zu Kreisbögen, die den Rand
des Einheitskreises senkrecht treffen. Im Modell schrumpfen alle
Objekte zum Rand hin – das ist das visuelle Zeichen der negativen
Krümmung. Das Gitter wirkt unendlich groß, obwohl es in einen
endlichen Kreis gepresst ist.
Regeln des zellulären Automaten
Regel 110 (1D, Turing-vollständig)
Wird zeilenweise angewendet: Jede Zeile des Gitters ist eine
unabhängige 1D-Kette. Der neue Zustand hängt nur von der Zelle selbst
und ihren linken/rechten Nachbarn ab.
| links | zentrum | rechts | neu |
| 1 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 0 | 1 | 1 |
| 0 | 0 | 0 | 0 |
Regel 30 (1D, chaotisch)
Bekannt für ihre Verwendung als Pseudo-Zufallszahlengenerator (Wolfram).
| links | zentrum | rechts | neu |
| 1 | 1 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 0 | 1 | 1 |
| 0 | 0 | 0 | 0 |
Game of Life (2D)
Jede Zelle hat vier orthogonale Nachbarn (oben, unten,
links, rechts). Lebende Zelle überlebt mit 2 oder 3 lebenden
Nachbarn; tote Zelle wird lebendig bei genau 3 lebenden Nachbarn.
Steuerung
- 1 / 2 / 3 – Regel wechseln
- + / - – Geschwindigkeit anpassen (1–30 Gen/s)
- Leertaste – Pause / Weiter
- R – Zellen zufällig verteilen (50 %)
- Mausklick – Zelle toggeln
- Esc – Beenden
Installation & Start
# 1. venv anlegen
python3 -m venv .venv
source .venv/bin/activate
# 2. Abhängigkeiten installieren
pip install pygame numpy
# 3. Starten
python zellularautomat.py