×
produktlogotitle

Seite: bda_index
Diese Seite wurde aktualisiert am 01.03.2021

LOGIN
Benutzer:
Passwort:
 
   if1.net-schulbuch.de

Computerkunst - Kunsttechnik: Bilder aus Wiederholungen

 

Künstlerinnen und Künstler bringen ihre Werke nicht mehr ausschließlich mit Hilfe der klassi­schen Werk­zeuge wie Pinsel, Farbe und Leinwand oder Hammer, Meißel und Stein oder Mes­ser, Holz und Stempelfarbe hervor, sondern benutzen heute genau so selbstverständlich Compu­ter, Software und Grafik-Ausgabegeräte. Beispiele kennst du aus Computeranima­tionen 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ünstleri­scher Bil­der erarbeiten. Dabei frischst du deine Programmierkentnisse auf und verwendest wieder viele bekannte Algo­rithmen.

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 Compu­ter, Software und Grafik-Ausgabegeräte hervor. Beispiele kennst du aus Computeranima­tionen in der Werbung.

Die Eigenarten des Werk­zeugs zur Erstellung dieser Bilder bleiben verborgen. Mit Blick auf die gewohnten Arbeitsmateria­lien - Pinsel und Stift, Hammer und Meißel - können wir hier wenig nachvollzie­hen. 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.

Algorithmen als Werkzeug für Künstlerinen und Künstler

 

Das Bild wird von einem Algorithmus erzeugt, dessen Text die Künstlerin oder der Künstler aufgeschrieben hat.

Wenn dieser Text fer­tig formuliert ist, dann ist das Kunstwerk fertig, die künstlerische Ar­beit 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. 

wirbel_td.py.txt

"""
    zeichnet eine 'Wirbelsturmspirale'
    (c)2021  if1.net-schulbuch.de (bda_index)
"""
from turtle import *

def spirale (groesse):
    weg = 1
    while weg < groesse:
        forward(weg)
        left(10)
        weg = weg * 1.05

def wirbel (x, y, groesse):
    for _ in range(8):
        up ()
        setposition (x, y)
        down ()
        right (45)
        spirale (groesse)

Wirbel(0, 0, 30)

 

Hier werden zwei verschiedene Arten von Wiederholungen verwendet:
 - die Schleife mit Abbruchbedingung in der Funktion spirale()
und
 - die Zählschleife in der Funktion wirbel()
 .

  

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.

 

 

Icon Auftrag 30x30 Experiment 1   

Implementiere die Funktion spirale() in Python

    1. Erprobe die Funktion spirale() mit unterschiedlichen Werten für den Parameter groesse
    2. Welche Werte für groesse sind sinnvoll?
    3. Experimentiere mit verschiedenen Werten für den Faktor 1.05 in der Zeile:  weg = weg * 1.05
      Welche Auswirkungen hat dieser Faktor?
    4. Ändere auch den Drehwinkel von 10°.
      Welche Auswirkungen kannst Du feststellen?

"Gute" Werte für den Paramter liegen zwischen 10 und 30.
Erbrobe auch Werte außerhalb dieses Bereichs.
Was passiert bei negativen Werten?
 

 

Icon Auftrag 30x30 Experiment 2   

Implementiere die beiden oben angeführten Funktionen in Python. 

    1. Erprobe die Funktion Wirbel() mit unterschiedlichen Werten für die Parameter x, y und Groesse
    2. Welche Werte für x und y sind sinnvoll?
    3. Lasse viele Spiralen unterschiedlicher Groesse gleichzeitig an verschiedenen Stellen des Grafikfensters erscheinen.
    4. Entsprechen die Ergebnisse deinen Erwartungen?

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.

Wenn du nicht mehr genau weißt, was man unter einem Seiteneffekt versteht, dann kannst du hier  nachlesen.
Wenn du noch nie etwas über Seiteneffekte gehört hast, dann sei dir das folgende Kapitel in diesem Buch empfohlen
 

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.

  1. Übertrage die beiden Funktionen in deine Programierumgebung. Funktion spirale().
  2. Teste diese neuen Funktionen mit verschiedenen Parametern.
    Achtung:  wirbel() hat einen weiteren Parameter!
  3. Notiere deine Beobachtungen.

wirbel02_td.py.txt

"""
    Zeichnet eine 'Wirbelsturmspirale'
    (c)2021  if1.net-schulbuch.de (bda_index)
"""
from turtle import *

def spirale (groesse):
    weg = 1
    while weg < groesse:
        forward(weg)
        left(10)
        weg = weg * 1.05

def wirbel (x, y, groesse, spiralenzahl):
    for _ in range(spiralenzahl):
        alterKurs = heading()
        up()
        setposition(x, y)
        setheading(alterKurs)
        down()
        right (45)
        spirale (groesse)
        winkel = 360 / spiralenzahl
        setheading(alterKurs + winkel)

wirbel(0, 0, 30, 5)

 

Aufgabe 3   

Auch die neue oben beschriebene Funktion wirbel() arbeitet offensichtlich korrekt. 
Analysiert man den Programmcode von wirbel() Zeile für Zeile, fallen trotzdem einige Merkwürdigkeiten auf.

  1. Notiere, was Du über Seiteneffekte bereits gelernt hast.
  2. Handelt es sich bei den auffälligen Programmzeilen um einen Seiteneffekt?
  3. Ist es ein anderer Fehlertyp? Wenn JA, wie würdest du ihn beschreiben? 
  4. Ist das überhaupt ein Fehler?
  5. Beurteile den Programmcode und fasse ihn konsequenter.

Wenn du nicht mehr genau weißt, was man unter einem Seiteneffekt versteht, dann kannst du hier  nachlesen.
Wenn du noch nie etwas über Seiteneffekte gehört hast, dann sei dir das folgende Kapitel in diesem Buch empfohlen
 

 

Icon 2 Sterne 30x30 Aufgabe 4   

Die folgenden Bilder kann man mit den nebenstehenden Funktionen erzeugen. 

 

 

 

 

Analysiere die Bilder und die Funktionen

  1. Versuche vier ähnliche Bilder durch Änderungen im Hauptprogramm zu zeichnen
  2. Erfinde weitere creative Möglichkeiten mit diesen Funktionen
  3. Experimentiere mit dem Parameter für die Farbe
  4. Welche Änderungen sind zum Zeichnen der folgenden Bilder nötig?

Der Abstand zwischen den Linien wird größer.
 
Die Dicke des Stiftes ändert sich zusätzlich.

winkel.py.txt

"""
    Zeichnet zwei Schenkel zu einem gegebenen Winkel.
    (c)2021  if1.net-schulbuch.de (bda_index)
"""
from turtle import *

def winkel (x, y, laenge, alpha=90):
    """
        x, y :Scheitelpunkt des Winkels
        laenge :Länge der Schenkel
        alpha: (optional) Winkel zwischen den Schenkeln
    """
    penup()
    setposition(x, y)
    pendown()
    forward(laenge)
    backward(laenge)
    left(alpha)
    forward(laenge)
    backward(laenge)
    right(alpha)

def viele_winkel (x, y, laenge, anzahl, alpha=90, color=(0.0, 0.0, 0.0)):
    """
        x, y :Scheitelpunkt des Winkels
        Laenge :Länge der Schenkel
        Anzahl :Anzahl der Winkel
        alpha=90 :(optional) Größe des Winkels
        color=(0.0, 0.0, 0.0)) :(optional) Farbe der Schenkel
    """
    for a in range(anzahl):
        pensize(2)
        pencolor(color)
        winkel(x, y, laenge, alpha)
        x += 4
        y += 4

showturtle()
viele_winkel(-100,-100, 200, 20, 125)
hideturtle()


 

 

 

 

 

 

Impressum
© 2023  Net-Schulbuch.de (i123)
10.00  0.0540  8.1.29