Diana Lange Generative Gestaltung Die Processing Bibliothek
Inhalt Diese Foliensammlung gibt eine Einsicht über processingspezifischen Anweisungen und Variablen.
Einführung Alle Elemente, die wir dank Processing nutzen können, sind über Bezeichner (Namen) benutzbar. Diese Namen wurden von den Processing-Entwicklern festgelegt. Über den Aufruf des Names können wir eine vordefinierte Funktionalität oder einen bestimmten Wert abfragen. Unter den Processingelementen gibt es zwei elementare Kategorien die wir unterscheiden können: - Funktionen - (System-) Variablen
Einführung Alle Elemente, die wir dank Processing nutzen können, sind über Bezeichner (Namen) benutzbar. Diese Namen wurden von den Processing-Entwicklern festgelegt. Über den Aufruf des Names können wir eine vordefinierte Funktionalität oder einen bestimmten Wert abfragen. Unter den Processingelementen gibt es zwei elementare Kategorien die wir unterscheiden können: - Funktionen - (System-) Variablen Funktionen (alternative Bezeichnung: Methode) sind immer Elemente, die etwas machen bzw. durchführen. Zum Beispiel die Funktion ellipse() zeichnet eine Ellipse. Wie genau sie das machen, ist für uns nicht einsehbar (eine Art Black Box ). Ein Sonderfall sind die Eventfunktionen. Variablen sind immer Elemente, die irgendwelche Informationen beinhalten (z.b. Zahlenwerte). Variablen machen nie etwas.
Einführung Die Unterscheidung in Anweisung und Variablen sind auch formal erkennbar. Bsp.: framerate(20); > setzt die Bildrate auf 20 frames / sekunde > macht etwas > Funktion framerate > beinhaltet eine Zahl, mit der tatsächlich erreichten Bildrate
einführung Die Unterscheidung in Anweisung und Variablen sind auch formal erkennbar. Bsp.: framerate(20); > setzt die Bildrate auf 20 frames / sekunde > macht etwas > Anweisung framerate > beinhaltet eine Zahl, mit der tatsächlich erreichten Bildrate > Variable Gleich lautender Bezeichner Funktionen haben nach dem Bezeichner immer einfache Klammern. Zwischen den Klammern können optional Werte stehen. Nach dem Bezeichner von Variablen folgt nie etwas. GENERATIVE GESTALTUNG. NATURE. WS 2015-2016. DIANA LANGE. HAWK@DIANA-LANGE.DE
Arten von Anweisungen Innerhalb der Funktionen gibt es noch einmal zwei Unterkategorien. Die erste Unterkategorie macht einfach etwas (Kein Rückgabewert). Bsp.: ellipse(x, y, breite, hoehe); nostroke();
Arten von Anweisungen Innerhalb der Funktionen gibt es noch einmal zwei Unterkategorien. Die erste Unterkategorie macht einfach etwas (Kein Rückgabewert). Bsp.: ellipse(x, y, breite, hoehe); nostroke(); Die zweite Unterkategorie macht etwas und teilt uns das Ergebnis in Form von einem Wert, der zurückgegeben wird, mit. Das Ergebnis bezeichnen wir als Rückgabewert. Bsp.: random(100, 500); noise();
Arten von Anweisungen Innerhalb der Funktionen gibt es noch einmal zwei Unterkategorien. Die erste Unterkategorie macht einfach etwas (Kein Rückgabewert). Bsp.: ellipse(x, y, breite, hoehe); nostroke(); Die zweite Unterkategorie macht etwas und teilt uns das Ergebnis in Form von einem Wert, der zurückgegeben wird, mit. Das Ergebnis bezeichnen wir als Rückgabewert. Bsp.: random(100, 500); noise(); Dadurch, dass diese Anweisungen uns das Ergebnis ihres Tuns zurückgeben, können wir dieses Ergebnis in Variablen ablegen. Bsp.: float zufallszahl = random(100, 500); In beiden Kategorien gibt es Anweisungen, die Werte benötigen (Parameterwerte werden in den Klammern geschrieben) und welche, die keine Werte benötigen (Klammern bleiben leer).
Anweisungen Ohne Rückgabe Grafische Elemente Bedeutung po(x, y); line(x1, y1, x2, y2); ellipse(x, y, breite, hoehe); rect(x, y, breite, hoehe); triangle(x1, y1, x2, y2, x3, y3); Zeichnet ein Punkt Zeichnet eine Linie Zeichnet eine Ellipse Zeichnet ein Rechteck Zeichnet ein Dreieck beginshape(); vertex(x, y); curvevertex(x, y); endshape(); endshape(close); Beginnt eine Freiform ( = Form, aus beliebig vielen Punkten) Fügt der Freiform einen eckigen Pfadpunkt hinzu Fügt der Freiform einen kurvigen Pfadpunkt hinzu Die Pfadpunkte müssen zwischen beginshape() und endshape() hinzugefügt werden Beendet die Freiform Beendet die Freiform und schließt die Form
Anweisungen Ohne Rückgabe Programmkontrolle & Helfer loop(); // Voreinstellung Bedeutung Schaltet das Loopen von draw() ein noloop(); Schaltet das Loopen von draw() aus framerate(bildrate); Setzt die Zielbildrate redraw(); draw() wird einmal ausgeführt (sinnvoll bei noloop()) prln(ausgabe); Schreibt die Ausgabe in die Konsole. Ausgabe können z.b. Zahlenwerte, Texte, Variablen, usw. sein smooth(); // Voreinstellung Schaltet die Kantenglättung an (Gutes Bild, Langsames Rendering) nosmooth(); Schaltet die Kantenglättung aus (Kantiges Bild, Schnelles Rendering) saveframe(stringdateipfad); Speichert eine Pixel-Bilddatei (.png,,.jpg,.tif) unter dem angegebenen Pfad
Anweisungen Mit Rückgabe Rückgabe float random(min, max); Bedeutung Generiert eine Zufallszahl zwischen min und max min und max sind Zahlenwerte ( oder float) color color(farbwerte); Berechnet einen Farbwert aus den verschiedenen Farbkanälen Hier sind die selben angaben möglich, wie bei fill() und stroke()
anweisungen mit rückgabe Rückgabe fl o a t random(min, max); Bedeutung Generiert eine Zufallszahl zwischen min und max min und max sind Zahlenwerte ( oder float) color color(farbwerte); Berechnet einen Farbwert aus den verschiedenen Farbkanälen Hier sind die selben angaben möglich, wie bei fill() und stroke() Beispiel: color grau = color(125); color farbe = color(125, 15, 0); color hexafarbe = color(#ff0000, 120); background(grau); fi l l (hexafarbe); GENERATIVE GESTALTUNG. NATURE. WS 2015-2016. DIANA LANGE. HAWK@DIANA-LANGE.DE
Anweisungen Mit Rückgabe Computerzeit Rückgabe year(); month(); Die hier gezeigten Funktionen geben den Zahlenwert der aktuellen Zeit (Jahr, Monat, Tag,...) zurück. Grundlage dafür ist das auf dem eigenen Rechner eingestellte Datum. day(); hour(); minute(); second();
anweisungen mit rückgabe computerzeit Rückgabe year(); month(); Die hier gezeigten Funktionen geben den Zahlenwert der aktuellen Zeit (Jahr, Monat, Tag,...) zurück. Grundlage dafür ist das auf dem eigenen Rechner eingestellte Datum. day(); hour(); minute(); second(); Typische Verwendung - Generierung von Zeitstempeln für die eindeutige Benennung von Dateien: String time = ""; time = time + year(); time = time + month(); time = time + day(); time = time + hour(); time = time + minute(); time = time + second(); saveframe("export/" + time + ".png"); GENERATIVE GESTALTUNG. NATURE. WS 2015-2016. DIANA LANGE. HAWK@DIANA-LANGE.DE
SonderFall Eventfunktionen Eventfunktionen sind auch Funktionen deren Name (Bezeichner) auch von Processing vordefiniert wurde. Im Gegensatz zu den anderen Funktionen werden sie aber (1) Automatisch beim Ereten eines bestimmten Ereignisses ausgeführt.und: (2) Was sie genau machen sollen - das bestimmen wir selber! void setup() { /* Inhalt von setup */} void draw() { /* Inhalt von draw */ } void mousepressed() { /* Inhalt von mousepressed */ } void mousereleased() { /* Inhalt von mousereleased */ } void mousemoved() { /* Inhalt von mousemoved */ } void mousedragged() { /* Inhalt von mousedragged */ } void keypressed() { /* Inhalt von keypressed */ } void keyreleased() { /* Inhalt von keyreleased */ }
Variablen Die folgenden Variablen müssen wir nicht mehr selbst definieren oder initalisieren. Sie werden von Processing bereit gestellt und auch automaisch mit (sinnvollen) Werten belegt und aktuallisiert. width height Typ Bedeutung Breite des Ausgabefensters Höhe des Ausgabefensters framerate framecount float Erreichte Bildrate Anzahl der Durchläufe von draw() mousex mousey X-Position der Maus im aktuellen Frame Y-Position der Maus im aktuellen Frame pmousex pmousey X-Position der Maus im vorhergehenden Frame Y-Position der Maus im vorhergehenden Frame
Variablen key Typ char Bedeutung Zeichen der Taste, die zuletzt gedrückt wurde mousebutton Maustaste, die zuletzt gedrückt wurde mousepressed keypressed boolean boolean true wenn Maus gedrückt, sonst false (Nicht zu verwechseln mit der gleichnamigen Evenfunktion mousepressed() ) true wenn Taste gedrückt, sonst false (Nicht zu verwechseln mit der gleichnamigen Evenfunktion keypressed() ) Diese Variablen auf dieser Folie werden erst im Kontext der Fallunterscheidungen eressant und wurden hier nur der Vollständigkeit halber mit aufgeführt.