Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig

Die Seite wird erstellt Thorben Zander
 
WEITER LESEN
Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig
Lerninhalte

                         Code & Design

                         sfgz.ch—1.12.2017
                         Hanna Züllig

                         Tag 1

sfgz.ch—2018, Code & Design © H. Züllig      1
Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig
Anlass 1                                  Anlass 2                Anlass 3

1.12.2018                                 14.12.2018 (halbtags)   11.01.2019

Einführung ins Modul                      – Code p5js:            – Code p5js:
– Programm Überblick                        Schlaufen,              Funktionen,
– Einstieg Code &                           Zufall                  Arrays, Eingaben
  Design                                                            über Tastatur,
– Aufgaben und                            – Übung:                  Daten einlesen (API),
  Abgabe                                    Muster                  Libraries GUI
– Code p5js:
  Arbeitsumgebung                                                 – Übung:
  Formen, Stile,                                                    Agent
  Farben, Variablen,
  Fonts                                                           – Aufgabe:
                                                                    Wetterdaten einlesen
– Übungen                                                           darstellen

– Tagesaufgabe:
  Abstract Clock

Präsentation

sfgz.ch—2018, Code & Design © H. Züllig                                                     2
Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig
Anlass 4                                  Anlass 5              Programmierkonzepte
                                          25.01.2018            – Variablen
18.01.2018 (halbtags)                                           – Math-Operationen
                                          Arbeiten am eigenen   – if-else-Konstrukte, switch
Arbeiten am eigenen                       Projekt               – Schlaufen
Projekt                                                         – Funktionen
                                                                – Events
                                          Nachmittags:
                                                                – Arrays
                                          Präsentation          – Libraries (GUI)
                                                                – API

sfgz.ch—2018, Code & Design © H. Züllig                                                        3
Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig
Lerninhalte

                         Abgaben
                         Abgabe 1
                           «Abstract Clock »
                         – Abgabe bis am 20.12.2018 abends

                         Abgabe 2
                           «Wetter App»
                         – Präsentation und Abgabe
                           25.01.2019 nachmittags

sfgz.ch—2018, Code & Design © H. Züllig                      4
Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig
Lerninhalte

                         Beurteilung
                         – Formal korrekter Code
                         – Verwendung der Programmierkonzepte, die behandelt wurden
                         – Experimentierfreudigkeit bezüglich Zusammenspiel Code & Design
                           (Parametrisches Design)
                         – Gestaltungsidee
                         – Umsetzung der Idee

sfgz.ch—2018, Code & Design © H. Züllig                                                     5
Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig
Inspiration

                                               John Maeda

                         https://maedastudio.com
                         https://www.ted.com/talks/john_maeda_on_design
                         ab 5:47 s

                         Abb.
                         Plakat aus der Serie «Morisawa 10 Poster, 1996»

sfgz.ch—2018, Code & Design © H. Züllig                                    6
Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig
Code & Design

                                          Code & Design ?
                                          Aufgabenfelder, bei denen die
                                          beiden zusammenspielen müssen.

                                          Parametrisches Design?
                                          Was ist das?
                                          Aufgabenfelder?

                                          Datenvisualisierung?
                                          Was hat Datenvisualisierung mit den
                                          beiden Begriffen oben zu tun?

sfgz.ch—2018, Code & Design © H. Züllig                                         7
Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig
Datenstories – Explorable

                         https://www.morgenpost.de/grafik/article139572405/So-stark-steigen-die-Wohnungspreise-in-Berlins-Kiezen.html?config=interactive

sfgz.ch—2018, Code & Design © H. Züllig                                                                                                                    8
Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig
Inspiration

                                             Martin Wattenberg

http://turbulence.org/Works/song/gallery/gallery.html
http://www.bewitched.com/song.html
http://hint.fm/wind/
https://research.google.com/bigpicture/

sfgz.ch—2018, Code & Design © H. Züllig                          9
Code & Design Tag 1 sfgz.ch-1.12.2017 Hanna Züllig - internauta by Hanna Züllig
Inspiration – Data Art

                                              Zach Liebermann

                         http://www.yesyesno.com/nike-collab-paint-with-your-feet/

sfgz.ch—2018, Code & Design © H. Züllig                                              10
Inspiration

                                          Michael Hansmeyer

http://www.michael-hansmeyer.com
Computational Architecture

sfgz.ch—2018, Code & Design © H. Züllig                       11
Karl Gerstner «Programme entwerfen», Abb. Morphologischer Kasten

sfgz.ch—2018, Code & Design © H. Züllig                            12
Inspiration John Maeda

                                          https://github.com/jeffThompson/CreativeProgramming1/blob/master/Assignments/Week04_Clocks.md

sfgz.ch—2018, Code & Design © H. Züllig                                                                                                   13
sfgz.ch—2018, Code & Design © H. Züllig   14
Inspiration Andreas Gysin, Sidi Vanetti

                                          http://hms.gysin-vanetti.com

sfgz.ch—2018, Code & Design © H. Züllig                                  15
Einführung Creative Coding HKBern
StudentInnen CAS DataViz

                                                                      Lukas Koller: https://www.internauta.ch/wbg/Clock_Lukas_Koller

                                          Adrian Riser: https://www.internauta.ch/wbg/Creative_Coding

sfgz.ch—2018, Code & Design © H. Züllig                                                                                      16
Einführung Creative Coding HKBern
StudentInnen CAS DataViz
Gestalter, Informatiker, Marketingleute

                                          Nicole Keller: https://www.internauta.ch/wbg/Clock_Keller_Nicole

                                               Andreas Moor: https://www.internauta.ch/wbg/Uhr_Andreas_Moor.html

sfgz.ch—2018, Code & Design © H. Züllig                                                                      17
Einführung Creative Coding HKBern

                                          Marc Habegger: https://www.internauta.ch/wbg/Marc-Habegger

                                                                                        Werner Dreier: https://www.internauta.ch/wbg/WernerDreier

sfgz.ch—2018, Code & Design © H. Züllig                                                                                                             18
Aufgabe 1

                                          Briefing
                                          1.12 2018, Creative Coding, Hanna Züllg
                                          Aufgabe: eine (abstrakte) Uhr programmieren

                                             To do:
                                             Visualisiere die laufende Zeit (und allenfalls das Datum) in
                                             einem p5.js Projekt

                                          Untersuche/Beachte:
                                          – Übersetzung der zeitlichen in visuelle Parameter
                                          – Veränderungen
                                          – die aktuelle Zeit muss nicht direkt ablesbar sein,
                                            die Übersetzung kann auch abstrakt sein
                                          – Beispiel Übersetzung in Winkel, in Grössen, in Sättigung einer Farbe, in
                                            Helligkeit
                                          – Zahlen und Text können erscheinen, müssen aber nicht

                                          Links:
                                          – http://www.cabinetmagazine.org/issues/29/foer.php
                                          – https://courses.ideate.cmu.edu/15-104/f2016/category/project-06-abstract-clock/
                                          – https://codepen.io/collection/DqRNLQ/3/
                                          – https://www.youtube.com/watch?v=E4RyStef-gY
                                          – https://processing.org/examples/clock.html

                                          Abgabe bis am 20. Dezember auf OneDrive

sfgz.ch—2018, Code & Design © H. Züllig                                                                                       19
Eine Community, zwei Umgebungen

                         processing.org                           p5js.org

                         älter, mehr Tutorials, Beispiele         jünger

                         Programmiersprache basiert auf           Programmiersprache basiert auf
                         Java                                     Javascript

                         muss compiliert werden, Applets laufen   läuft auf Browser -> Web
                         nicht mehr auf Browsern

                         PDF Export Vektordaten -> Print          SVG Export mittels Library fehlerhaft

sfgz.ch—2018, Code & Design © H. Züllig                                                                   20
p5.js Basics

                         Arbeitsumgebung p5.js

sfgz.ch—2018, Code & Design © H. Züllig          21
p5.js Basics

                         Projektaufbau:
                         «Projektname» (Folder)
                         – libraries (Folder)
                         – index.html
                         – sketch.js

                         index.html ist das html File, welches der lokale Server im Browser öffnet
                         sketch.js ist das File, in dem wir die Codezeilen schreiben, um die Dartstellung anzupassen.

                         Öffnen wir im Chrome die Entwicklertools – über «Anzeigen» –> «Entwickler» –> «Entwicklertools» so
                         sehen wir im Code, dass p5.js uns das «canvas» Objekt generiert. Auf dieses Objekt kann mit JavaScript
                         gezeichnet werden. https://www.w3schools.com/html/html5_canvas.asp

sfgz.ch—2018, Code & Design © H. Züllig                                                                                           22
p5.js Basics

                         sketch.js: wir finden hier zwei Befehlsblöcke.

                         Der erste, die Funktion setup wird einmal bei Programmstart ausgeführt.
                         Dieser Block enthält deshalb Definitionen, die sich im Laufe des Programms
                         nicht ändern. Wie zum Beispiel die Grösse der «Leinwand», canvas genannt.
                         Die zweite, die Funktion draw() wird standardmässig automatisch 60 Mal pro
                         Sekunde aufgerufen.

                         Referenz: http://p5js.org/reference/

sfgz.ch—2018, Code & Design © H. Züllig                                                               23
p5.js Basics

                         Koordinatensystem

                         Geometrie           P5Js (und processing und java....)
                                             CSS ebenfalls

sfgz.ch—2018, Code & Design © H. Züllig                                           24
Input Block 1, sketch 1–4

                         sketch1
                         In die Funktion draw werden die Befehle zum Zeichnen geschrieben.
                         Für die Grundformen gibt es fertige Befehle.

                         Beispiel Rechteck:
                         rect(50,50,100,200);

                         Die Bedeutung der Reihenfolge der Angaben in den runden Klammern ist genau definiert.
                         – die erste Zahl: x-Koordinate
                         – die zweite Zahl: y-Koordinate
                         – die dritte Zahl: Breite
                         – die vierte Zahl: Höhe

                         Das alles schaut man in der Referenz nach! http://p5js.org/reference/
sfgz.ch—2018, Code & Design © H. Züllig                                                                          25
Zeit & Datum

                         In p5.js stehen diese Befehle zur Verfügung:

                         day();             Tag                1–31
                         hour();            Stunde             0–23
                         minute();          Minute             0–59
                         millis();          Millisekunden      Tausendstel Sekunden seit das spezifische Programm läuft
                         month();           Monat              1–12
                         second();          Sekunde            0-59
                         year();            Jahr               Aktuelles Jahr, vierstellig z.Bsp. 2018

                         sketch2

                         Hier benutzen wir den aktuellen Wert der Sekunde, für die Breite des Rechtecks.
                         Mit dem Schlüsselwort var definieren wir eine Variable.
                         var sec = second();

                         Der Wert aus dem Befehl second() wird in die Variable sec geschrieben.
                         Man kann sec dann brauchen wie eine Zahl.

sfgz.ch—2018, Code & Design © H. Züllig                                                                                   26
Farbe

                                                                                      Farbdefinition mit
                         sketch3                                                      einem,
                                                                                      drei und
                                                                                      vier Parametern:

                                                                                      fill(255);//schwarz bis weiss 0-255
                                                                                      fill(255,0,0)//rgb, je 0-255
                                                                                      fill(255,0,0,100)//rgba, je 0-255

                         Entweder über color(r,g,b) eine neue Farbe definieren, in eine Variable
                         schreiben und dann verwenden.

                         Oder direkt die Farbwerte in die Stildefinition schreiben.
                         fill(r,g,b)

sfgz.ch—2018, Code & Design © H. Züllig                                                                                 27
Schriften

                         sketch4
                         http://www.1001fonts.com/led-fonts.html

                         Konkatenation –> Zusammenfügen von Variablen und String:

                         nf(sec, 2,0);
                         die Funktion nf(zahl, right, left) formatiert eine Zahl gemäss den Angaben in der Klammer.
                         right meint die Anzahl der Stellen rechts vom Komma, left links.

sfgz.ch—2018, Code & Design © H. Züllig                                                                               28
Schriften: Konkatenation

                         Konkatenation in JavaScript

                         Konkatenation –> Zusammenfügen von Variablen und Zeichenfolgen in
                         eine neue zusammenhängende Zeichenfolge:
                         Achtung Anführungszeichen nehmen, siehe Screenshot, nicht Hochkommas

                             Variable                       String                          Variable

                         ?? wie fügt man das zusammen?

                             Variable                +”     String                ”+        Variable

                         Stellt euch Kettenglieder vor, die zusammengeschmiedet werden müssen. Die
                         Stücke zwischendurch verbinden Variablen und Zeichenfolgen (englisch String).

                         Die Verbindungsglieder bestehen aus
                         +” oder “+
                         wobei das Anführungszeichen zum String schaut (und gehört) und das plus zur
                         Variable. Es ist eigentlich ganz einfach, muss aber sauber gemacht werden.

                         ”       String                ”+       Variable

                         ”       String                ”+       Variable               +”   String       ”

sfgz.ch—2018, Code & Design © H. Züllig                                                                      29
Block1 Übungen

                         Übungen
                         sketch1:
                         – Zeichne andere Formen, indem du diese Befehle in der Referenz nachschaust:
                           line(), ellipse(), arc(), triangle()

                         sketch2:
                         – Gib analog zu Sekunde den Wert der Minute und der Stunde in je eine weitere Variable.
                           Benutze diese Variablen für andere Masse und andere Formen.

                         sketch3:
                         – Erstelle eine Ellipse in der Mitte der Canvas. Referenz hierzu: https://p5js.org/reference/
                           2D Primitives. Mach den Radius abhängig von den Sekunden.
                         – Integriere die Transparenz in deinen Sketch, lege zwei Formen übereinander, versuche
                           Farben zu mischen

                         sketch4:
                         – Lade eine andere Schrift, ändere die Schriftgrösse
                         – Positioniere die Textbox woanders
                         – Ändere die Schriftgrösse in Abhängigkeit von den Parametern Zeit
                         – Notiere allenfalls Fragen

                         Weiterführend: Kreiere einen eigenen Sketch, bei dem du das Gelernte frei anwendest.
                         Benutze die Variablen, die du über Zeit und Datum abfragen kannst. Gestalte damit:
                         – Formen und Grössen, Farben, Schrift
                         Pair Programming:
                         Ein Programmierer schreibt den Code, während der andere den geschriebenen Code kontrolliert sowie Probleme, die ihm dabei auffallen, sofort
                         anspricht. Diese können dann sofort (im Gespräch zu zweit) gelöst werden. Die beiden Programmierer sollten sich bezüglich dieser beiden Rollen
                         abwechseln. Auch die Zusammensetzung der Paare sollte sich häufig ändern.

sfgz.ch—2018, Code & Design © H. Züllig                                                                                                                                   30
Input Block2, sketch5–6

                         sketch5
                         arc(width/2, height/2, 300, 300, 0, 180);
                         https://p5js.org/reference/#/p5/arc

                         Herausforderungen
                         Wie «übersetze» ich Sekunden, Minuten und Stunden in die entsprechenden Winkel?

                         p5 bietet mir eine Funktion an: map, https://p5js.org/reference/#/p5/map
                         Syntax: map(value,altstart1,altstop1,neustart2,neustop2).
                         Damit kann ich einen Wert von einem Wertebereich in einen anderen übersetzen.

                            var winkelsec = map(sec, 0, 60, 0, 360);

                         Die obige Funktion übersetzt mir Sekunden vom alten Wertebereich
                         0–60 in einen neuen der von 0–360 geht.

                         Diese Übersetzung ist einfach, die könntest du auch rechnen, indem du mal 6 multiplizierst.
                         Aber stelle dir vor, du möchtest die Sekunden 0-60 in Transparenzwerte von 50-155 übersetzen.
                         Da ist die map Funktion sehr nützlich:

                            var alpha = map(sec, 0, 60, 50, 155);

sfgz.ch—2018, Code & Design © H. Züllig                                                                                  31
Umrechnungsfunktion

                         map
                         Die Funktion map übersetzt einen Wert innerhalb eines Wertebereichs relativ in einen anderen Bereich.
                         die Parameter sind folgende:
                         map(wert, min_alterbereich, max_alterbereich, min_neuerbereich, max_neuerbereich);

                         Beispiel:
                         map(9,1,20,1,12); //Resultat 5.631579

                         1    2     3     4   5   6   7   8   9   10 11 12 13 14 15 16 17 18 19 20

                         1   2      3     4   5   6   7   8   9   10 11   12

sfgz.ch—2018, Code & Design © H. Züllig                                                                                          32
Abstrakte Uhr

                                          Skizzieren
                                          Finde dein Bild für deine abstrakte Uhr.
                                          Skizziere von Hand. Bleibe einfach.

                                          Überprüfe deine eigene Idee bezüglich Machbarkeit!
                                          Welche Dinge kennst du bereits im Code, welche kannst du dir vielleicht erarbeiten,
                                          was musst du vereinfachen, weil es zu kompliziert ist?

sfgz.ch—2018, Code & Design © H. Züllig                                                                                         33
Input Rotation

                         sketch6

                         Drehen geschieht in p5js indem ich nicht ein einzelnes Objekt, sondern das ganze
                         Koordinatensystem drehe. Zuerst tönt das kompliziert, aber es hat Vorteile.
                         Man kann so ganze Formationen gemeinsam drehen.

sfgz.ch—2018, Code & Design © H. Züllig                                                                     34
Input Rotation

                         Standardmässig passiert die Rotation des Koordinatensystems um den Nullpunkt links oben.
                         Das bedeutet aber, dass das Objekt aus dem sichtbaren Bereich gedreht wird!

                         Probier das mal aus!

sfgz.ch—2018, Code & Design © H. Züllig                                                                             35
Input Rotation

                         Wenn ich hingegen ein Objekt um sein Zentrum drehen möchte, muss ich zuerst den
                         Nullpunkt des Koordinatensystems verschieben.
                         Das macht man mit dem Befehl translate(x,y);

                         Probiere das Objekt von vorher um sein Zentrum zu drehen!

                         Ist es das, was du erwartet hast?
                         Achtung der Nullpunkt liegt jetzt auf 60, 110!!
                         Wie zeichnest du das Rechteck nun damit es an der richtigen Position liegt?

sfgz.ch—2018, Code & Design © H. Züllig                                                                    36
Input Rotation

                         Wenn ich das Koordinatensystem verschoben und gedreht habe, dann bleibt es so.
                         Alle weiteren Formen werden verschoben und gedreht gezeichnet.
                         Manchmal möchte man aber etwas drehen und den Rest nicht.

                         Dann speicherst du zuerst die alte Position des Koordinatensystems ab.
                         Das machst du mit der Funktion push();

                         Dann machst du deine Transformationen und zeichnest die Objekte.
                         Um das Koordinatensystem wieder zurück auf die alte Position zu bringen,
                         rufst du den Befehl pop(); auf.
                         Alle Schritte im Überblick:

                         Beachte die Befehle für die drei Rechtecke sind immer dieselben!
                         Kannst du nun den Zeiger bei sketch 6 zum Rotieren bringen?

sfgz.ch—2018, Code & Design © H. Züllig                                                                   37
Aufgabe aufs nächste Mal

                                          Repetition
                                          1.12 2018, Creative Coding, Hanna Züllg

                                             To do:
                                             Repetiere für dich mit Hilfe von diesem Skript nochmals alle Konzepte
                                             in den Sketches 1–5. Mache kleine Anpassungen im Code so lange
                                             bis du die Befehle verstanden hast. Wir werden auf diesen Konzepten aufbauen!

                                             Allenfalls zur Repetition Basic Videos von Daniel Shiffmann schauen:

                                             https://www.youtube.com/watch?v=c3TeLi6Ns1E&index=3&list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA
                                             https://www.youtube.com/watch?v=riiJTF5-N7c&list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA&index=4

                                             (Sketch 6 Rotation freiwillig)

sfgz.ch—2018, Code & Design © H. Züllig                                                                                                    38
Sie können auch lesen