Computerkunst - Kunsttechnik: Bilder aus Wiederholungen
Künstlerinnen und Künstler bringen ihre Werke nicht mehr ausschließlich mit Hilfe der klassischen Werkzeuge wie Pinsel, Farbe und Leinwand oder Hammer, Meißel und Stein oder Messer, Holz und Stempelfarbe hervor, sondern benutzen heute genau so selbstverständlich Computer, Software und Grafik-Ausgabegeräte. Beispiele kennst du aus Computeranimationen in der Werbung. Vielleicht hast du schon gehört, dass in großen Filmstudios Kulissen von Filmen mit Computerhilfe in das Spielgeschehen montiert werden. Neuerdings gibt es schon vollständige Filme, die ausschließlich am Computer synthetisch erstellt werden.
In diesem Kapitel wirst du dir Grund legende Techniken zur Programmierung künstlerischer Bilder erarbeiten. Dabei frischst du deine Programmierkentnisse auf und verwendest wieder viele bekannte Algorithmen.
Bilder wie die Nebenstehenden haben wir in einer Ausstellung gesehen. Der Ausstellungskatalog enthielt zu allen ausgewählten Werken Informationen zur Künstlerin oder zum Künstler, zu den Absichten der Künstlerin oder des Künstlers sowie zu den verwendeten Computern und Ausgabegeräten.
Hinweise zur Herstellung waren nicht zu finden.
Künstlerinnen und Künstler bringen ihre Werke heute wie selbstverständlich mit Computer, Software und Grafik-Ausgabegeräte hervor. Beispiele kennst du aus Computeranimationen in der Werbung.
Die Eigenarten des Werkzeugs zur Erstellung dieser Bilder bleiben verborgen. Mit Blick auf die gewohnten Arbeitsmaterialien - Pinsel und Stift, Hammer und Meißel - können wir hier wenig nachvollziehen. Es hilft nicht weiter, einige in der Ausstellung aufgebaute Computer, Plotter und Drucker anzusehen, denn die Maschinen sind nur mittelbar Werkzeuge zum Erstellen der Bilder. Die verwendeten Algorithmen bleiben verborgen.
Das Bild wird von einem Algorithmus erzeugt, dessen Text die Künstlerin oder der Künstler aufgeschrieben hat.
Wenn dieser Text fertig formuliert ist, dann ist das Kunstwerk fertig, die künstlerische Arbeit ist beendet.
Algorithmen können künstlerische Werkzeuge sein.
Wir wollen in diesem Abschnitt zeigen,
- mit welchen Programmiertechniken Kunstwerke erzeugt werden,
- wie mit künstlerischer Absicht geschriebene Algorithmen formuliert werden und
- wie du im Programmtext die Vorstellungen der Künstlerin oder des Künstlers wiederfindest.
Dabei werden Farben zuerst außer acht gelassen, weil ihre Verwendung die Algorithmen unnötig verkompliziert.
Hier werden zwei verschiedene Arten von Wiederholungen verwendet: |
Die Abbildung steht als Prototyp für eine Kunsttechnik: Wiederholt wird eine Figur aus Wiederholungen gezeichnet. Die Abbildung oben zeigt eine Spirale aus wiederholt gezeichneten Spiralen bzw. Spiralarmen wie in der Abbildung unten.. Jeder Spiralarm selbst wird durch eine Wiederholung mit Abbruchbedingung erzeugt. Es werden Wiederholungen ineinander geschachtelt.
|
Experiment 1 |
Implementiere die Funktion spirale() in Python
"Gute" Werte für den Paramter liegen zwischen 10 und 30. Erbrobe auch Werte außerhalb dieses Bereichs. Was passiert bei negativen Werten? |
Experiment 2 |
Implementiere die beiden oben angeführten Funktionen in Python.
Lass in einem Bild 4 Wirbel zeichnen. Wähle jeweils x und y so, dass sie sich nicht überschneiden. Wähle für den Parameter groesse die vier Werte 16, 18, 20 und 22. |
Wahrscheinlich hattest du eher eine regelmäßige Spirale wie im Bild links erwartet.
Tatsächlich erscheinen die Abstände zwischen den Spiralarmen eher unterschiedlich wie in der rechten Abbildung.
Aufgabe 1 |
Kannst du erklären, warum die Abstände der Spiralarme unterschiedlich sein können? Was musst Du in den beiden Funktionen spirale() und wirbel() ändern, damit das Ergebnis deinen Erwartungen entspricht?
Wenn du schon viel probiert hast, aber der entscheidende Durchbruch nicht gelingt, sollten die folgenden Tipps helfen:
Informiere dich, wie in Python die Turtle-Funktionen heading(), setheading(), position() und setposition() wirken.
Es treten offensichtlich ein "Seiteneffekte" auf. Was ist ein Seiteneffekt? Wo hast du Seiteneffekte kennengelernt?
Untersuche die beiden Funktionen spirale() und wirbel() auf Seiteneffekte.
Bevor in der Funktion wirbel() eine Spirale gezeichnet wird, wird der Stift auf seine Startposition zurückgesetzt. Das allein reicht nicht! Es muss auch die ursprüngliche Ausrichtung des Stifts wiederhergestellt werden, bevor eine Drehung um 45° erfolgt.
Nach dem Zeichnen einer Spirale entspricht nur in seltenen Fällen die Richtung des Stift der Richtung, die der Stift vor dem Zeichnen hatte. Die Richtung am Ende der Spirale richtet sich nach der Größe der Spirale. Der Seiteneffekt ist deshalb in der Funktion sprirale() zu suchen.
|
turtle.setposition(x, y) oder
turtle.setposition((x, y)) bewegt die Turtle auf die angegebene Position. Ggf. wird bei der Bewegung eine Linie erzeugt.
Beide Schreibweisen für die Parameter sind möglich!
turtle.position() gibt die augenblickliche Position (x, y) der Turtle als Tupel aus zwei Werten zurück.
Beispiel: turtle.position() liefert ein Wertepaar in der Form: (20.00, 35.10)
turtle.xcor() Liefert den aktuellen x-Wert der Position zurück
turtle.ycor() Liefert den aktuellen y-Wert der Postion zurück
turtle.setheading() Setzt die "Blickrichtung" bzw. den "Kurs" der Turtle auf einen Winkel ("Kompasskurs")
ACHTUNG: Die Wirkung ist abhängig vom MODE, der für die Turtle definiert ist. Siehe dazu ????????
turtle.heading() Liefert die "Blickrichtung" als Winkel zurück.
ACHTUNG: Die Wirkung ist abhängig vom MODE, der für die Turtle definiert ist. Siehe dazu ????????
turtle.penup() Hebt den Stift der Turtle an. Beim Bewegen wird keine Spur (Linie) hinterlassen.
turtle.pendown() Senkt den Stift ab. Beim Bewegen wird eine Spur (Linie) hinterlassen.
turtle.isdown() Liefert den Wert True oder False
turtle.pensize() Liefert ohne Parameterangabe die aktuelle Dicke des Stifts
Wird als Parameter eine Zahl angegeben, nimmt der Stift diese als "Dicke" an.
turtle.speed(wert) 0=Höchstgeschwindigkeit, 1 (langsam) bis 10 (schnell)
Aufgabe 2 | |
Nach Lösen der Aufgabe 1 ist klar, dass der Seiteneffekt in der Funktion spirale() enststeht und also dort die Korrektur erfolgen muss. Nebenstehend haben ist ein Python-Programm mit dem Versuch notiert, den Seiteneffekt der Funktion spirale() nicht dort, sondern durch eine Korrektur in der Funktion wirbel() auszugleichen.
|
|
Aufgabe 3 |
Auch die neue oben beschriebene Funktion wirbel() arbeitet offensichtlich korrekt.
|
Aufgabe 4 | |
Die folgenden Bilder kann man mit den nebenstehenden Funktionen erzeugen.
Analysiere die Bilder und die Funktionen
Der Abstand zwischen den Linien wird größer. Die Dicke des Stiftes ändert sich zusätzlich. |
|