Creative Coding

btk

Till Nagel

Bewegungen – Woche 5

Aufgaben

E1: Verlauf

Zeichne horizontale Linien, die heller werden, je weiter unten sie sind.

Tipp: Verwende Übung D1 als Basis.

E2: Klecksender Pinsel

Imitiere einen klecksenden Pinsel. Zeichne in einem zufälligen Abstand zur Maus Kreise, die unterschiedlich groß sind.

Variante: Ändere die Farbe bei Mausklick.

E3: Zufallsbewegungen

Erstelle eine dynamische Komposition, auf der sich ein kleiner Kreis langsam zufällig fortbewegt. Setze dazu die "sanfte Zufallsabweichung" ein. Nutze eine transparente Farbe deiner Wahl.

E4: Farbige Rechtecke

Zeichne zufällig positionierte Rechtecke, deren Farbe abhängig von der vertikalen Position ist.


Funktionen

Eine Funktion hat einen Namen und führt bestimmte Anweisungen und Ausdrücke aus. Solche Funktion können wir aufrufen; wir können den Computer also anweisen, die Funktion zu verwenden. Dies tun wir insbesondere auch dann, wenn wir eine Linie zeichnen wollen. Eine Anweisung ist immer auch eine Funktion.

Eine Funktion kann Parameter besitzen, d.h. dass die Art, wie die Funktion ausgeführt wird, parametrisiert ist.

Die Funktion in der ersten Zeile ist eine Funktion ohne Parameter; dies ist daran erkennbar, dass in den Klammern hinter dem Funktionsnamen (noStroke) keine Werte stehen.
Die anderen beiden Funktionen haben Parameter: Der Punkt wird an die Position 50,50 gesetzt, und die Linie vom Mittelpunkt zur aktuellen Mausposition gezeichnet. Wie wir bereits gesehen haben, können für die Parameter also direkt Zahlen (oder andere Werte) wie auch Variablen stehen.

Funktionen mit Rückgabewert

Darüber hinaus können Funktionen Rückgabewerte haben, d.h. dass der Aufruf einer Funktion einen neuen Wert berechnet, und diesen zurück gibt. Wir haben in der letzten Stunde mit random() bereits solch eine Funktion kennen gelernt.
Diese Rückgabewerte können wir etwa verwenden, um sie

  • einer Variablen zuzuwiesen
    float x = random(100);
  • in Ausdrücken zu verwenden
    x = y * (random(100) - 50);
  • in Anweisungen zu benutzen.
    ellipse(random(200), random(height), 20, 20);

So gibt es in Processing viele Funktionen, die direkt aus der Geometrie und Arithmetik stammen. Beispielhaft seien hier folgende Funktionen genannt:

sin()

sin(value);

Berechnet den Sinus-Wert des übergebenen Parameters und gibt diesen als Rückgabeparameter zurück.

sqrt()

sqrt(value);

Berechnet die Wurzel (square root) des Werts und gibt diesen berechneten Wert zurück.

Im nächsten Abschnitt lernen wir noch einige weitere Funktionen mit Rückgabewerten kennen.

Einschränkungen

Wie in Dynamische Formen angesprochen, helfen u.a. Einschränkungen, das Verhalten von animierten Elementen zu beeinflussen.

max()

max(value1, value2);

Gibt den größeren von beiden Werten zurück.

min()

min(value1, value2);

Gibt den kleineren von beiden Werten zurück.

constrain()

constrain(value, minValue, maxValue);

Beschränkt eine Variable auf einen Wertebereich. Diese Anweisung gibt einen Wert zurück, der auf jeden Fall zwischen minValue und maxValue liegt.

	int x = constrain(mouseX, 20, 100);

Zufall in Bewegung & Transformation

Wir haben bereits gesehen, wie wir den Zufall einsetzen können, um neue, in gewisser Weise unerwartete Ergebnisse zu erreichen. Bisher allerdings haben wir lediglich die Position, die Form oder die Farbe eines graphischen Elements zufällig verändert.

Screenshots aus Übung D3

Jetzt wollen wir uns anschauen, wie wir dies sanfter geschehen lassen können. Statt die Werte jedes Mal vollständig neu zufällig zu wählen, können wir den alten Wert nehmen, und diesen um einen zufälligen Wert abwandeln.

Diese Bilder entstanden, in dem ein Kreis in der Mitte des Zeichenbereichs gezeichnet wurde, und von dieser Position ausgehend, leichte zufällige Abweichungen hinzu addiert, bzw. abgezogen wurden. An dieser neuen Position wurde der nächste Kreis (halbtransparent) gezeichnet. Und so weiter …

 

Diese Abweichung kann natürlich auch für andere Eigenschaften eines Elements verwendet werden. Im folgenden Beispiel wird der Grauwert der Linien stets nur sanft verändert.

Creative Commons Lizenz: Namensnennung-NichtKommerziell-Weitergabe unter gleichen Bedingungen 2.0 (Deutschland)

© 2007 Till Nagel, All rights reserved – Alle Rechte vorbehalten.