Creative Coding

btk

Till Nagel

Schleifen & Dynamik – Woche 4

Aufgaben

D1: Meine erste Schleife!

Erstelle eine statische Linien-Komposition: Zeichne mit Hilfe einer while-Schleife horizontale Linien.

Variation mit dicker werdenden Linien

Variation: Die Linien sollen dicker werden je weiter unten sie liegen.

Variation: Verwende schräge Linien.

D2: Bull's eye

Programmiere folgende Grafik nach.

Rote konzentrische Kreise

D3: Zufallskreise

Erstelle eine dynamische Form, so dass an zufälligen Positionen Kreise gezeichnet werden.

früher Zeitpunkt

späterer Zeitpunkt

D4: Prozess

Schaue dir die beiden folgenden dynamischen Formenkomposition an. Versuche den Code nachzuvollziehen. Und ändere und erweitere dann den Code mit eigenen Ideen!

Spiel mit den Sketches und erstelle eigene dynamische Formen. Verwende z.B.

  • verschiedene Elemente (Kreise, Rechtecke, etc)
  • zufallsgesteuerte Farben
  • die Mausposition, um visuelle Attribute interaktiv zu beeinflussen

Schleifen

Eins der zentralen Grundkonzepte des Programmierens ist, komplexe Prozesse zu vereinfachen und mit möglichst wenig Zeilen Programmcode auszukommen. Ein wichtiges Hilfsmittel dafür sind Schleifen.
In Processing gibt es verschiedene Möglichkeiten, solch eine Schleife zu programmieren. Die wichtigste ist die while-Schleife: Diese läuft so lange ab, solange die Bedingung wahr ist.

Bisher mussten wir etwa fünf parallele Linien so programmieren:

Dies kann durch eine Schleife folgendermaßen vereinfacht werden:

oder auch durch folgenden äquivalenten Code (der statt in 10er-Schritten in 1er-Schritten fortschreitet, und dafür in der line()-Anweisung die Variable i noch multipliziert)

Die Variable, die sich in der Schleife ändert, kann natürlich nicht nur für die Position, sondern auch für andere Attribute genutzt werden. Im folgenden Beispiel etwa zusätzlich für die Füllfarbe der Kreise.

Wichtig bei allen Schleifen ist, dass die Bedingung irgendwann erfüllt werden muss   (sonst endet das Programm nie und gerät in eine sogenannte Endlosschleife).

Dynamische Formen

Eine berechnete Form wird erzeugt durch die Anwendung eines Algorithmus, der als klar definierte Reihe von Anweisungen und Ausdrücken beschrieben wird. Dieser Algorithmus ist üblicherweise parametrisiert, d.h. dass ihr Aussehen und Verhalten von einer Reihe von Variablen kontrolliert wird.

Eine dynamische Form ist eine Form, die sich über die Zeit verändert oder auf Interaktion reagiert. Wir haben dynamische Formen bereits im Umgang mit draw() kennen gelernt.

Durch Bedingungen und Einschränkungen können wir dynamische Formen beschreiben, und ihr Verhalten beeinflussen. Verwenden wir für Eigenschaften der Form Zufallszahlen, so befreien wir die Form in gewissen Rahmen von ihrer Determiniertheit, von der exakten Vorhersagbarkeit, und können Benutzer und selbst uns Programm-Designer überraschen.

Zufall & Einschänkungen

random()

random(value);
random(minValue, maxValue);

Erzeugt einen Zufallswert. Jedes Mal wenn random() aufgerufen wird, wird ein zufälliger, "unerwarteter" Wert zurück gegeben. Der erzeugte Wert liegt dabei zwischen 0 und value, bzw. zwischen minValue und maxValue und ist vom Datentyp float.

Der zufällige Wert, den random() erzeugt, kann

  • einer Variablen zugewiesen
    float x = random(100);
  • in Ausdrücken verwendet und
    x = y * (random(100) - 50);
  • in Anweisungen benutzt werden.
    ellipse(random(200), random(height), 20, 20);

Wie alle Werte können diese Zufallswerte für beliebige Zwecke zum Einsatz kommen – sei es für die Position, die Größe oder die Farbe eines visuellen Elements. Folgendes Beispiel zeichnet vertikale Linien, deren Grauwert zufällig ist:

Beispielresultat des obigen Codes

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

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