Programmazione creativa con Processing

Questo viaggio è rivolto tutti coloro che vogliono avvicinarsi alla programmazione in modo creativo usando Processing. Per muovere i primi passi questo è un buon libro: Getting Started with Processing (GSWP). Per approfondire consiglio: Generative Design (GD).

Il viaggio è diviso in quattro parti fondamentali. Ogni parte agirà su due livelli concettuali: principi della progettazione e concetti della programmazione.

Parte prima

Principi di progettazione: forma e colore
Concetti di programmazione: variabili e ripetizioni

In questa prima parte applicheremo due principi base della progettazione: la forma e il colore. Studieremo inoltre alcuni concetti di base della programmazione: assegnamento di valori a variabili, condizionale e ripetizione (ciclo). Questa parte corrisponde ai capitoli 3 e 4 del libro GSWP.
  1. Usando le forme, i colori e le variabili, disegnare una faccia. [Sketch]
  2. Usando due cicli innestati uno dentro l'altro, generare lo spettro di colori in modalità RGB facendo variare le componenti rosso e verde e fissando al minimo la componente blu. Provare altre combinazioni. Ripetere l'esercizio in modalità HSB. [Sketch RGB, Sketch HSB]
  3. Ripetere l'esercizio precedente sostituendo ai punti dei cerchi. Provare con altre forme predefinite o definite da voi. [Sketch]
  4. Generare cerchi concentrici sempre più piccoli e equidistanti alternando il colore di riempimento. Usare un ciclo for e un condizionale. [Sketch]
Approfondimento: leggere i capitoli P.1 Colour e P.2 Form del libro GD.

Parte seconda

Principi di progettazione: interattività, immagini e tipografia
Concetti di programmazione: setup, draw, condizionale, vettori

In questa seconda parte impareremo a creare applicazioni interattive; inoltre vedremo come lavorare con immagini e caratteri tipografici. Ci servirà ragionare in termini di funzioni setup (inizializzazione) e draw (ripetizione infinita). Questa parte corrisponde ai capitoli 5, 6 e 10 del libro GSWP.
  1. Caricare l'immagine lunar.jpg e visualizzarla nelle seguenti versioni: l'immagine originale affiancata all'immagine originale, l'immagine originale affiancata all'immagine originale in trasparenza, e l'immagine originale affiancata all'immagine in blu con trasparenza. [Sketch]
  2. Aggiungere e caricare il proprio font preferito in formato bitmap e vettoriale. Usarlo per scrivere Hello World! nei due formati. [Sketch]
  3. Aggiungere e caricare il proprio font preferito e, usandolo, scrivere Hello World! in modo che il testo segua il movimento del cursore e abbia una dimensione proporzionale alla distanza del cursore dal centro della finestra. [Sketch]
  4. Muovere una sfera di dimensioni fisse che segue il cursore con un movimento fluido senza lasciare traccia. La sfera cambia colore in base alla posizione del cursore. Cambiare la modalità di colore usando la tastiera: premendo il tasto 'r' minuscolo o maiuscolo si attiva la modalità RGB e premendo il tasto 'h' minuscolo o maiuscolo si attiva la modalità HSB. Aumentare la larghezza e l'altezza della sfera usando le frecce della tastiera. Salvare il frame in una immagine premendo il mouse. [Sketch]
  5. Studiare l'esempio che si trova nello sketch contenuto in Examples -> Basics -> Input -> StoringInput di Processing. [Sketch]
Approfondimento: leggere i capitoli P.3 Type e P.4 Picture del libro GD.

Parte terza

Principi di progettazione: moto e casualità

In questa terza parte impareremo a muovere oggetti per creare animazioni; in particolare realizzeremo il moto lineare, il moto casuale, e il moto oscillatorio (anche nelle sue declinazioni circolare e spirale). Questa parte corrisponde il capitolo 7 del libro GSWP.
  1. Realizzare quattro sfere che si muovono da punti di partenza arbitrari verso un punto di arrivo comune con le seguenti velocità: costante, crescente, decrescente, infinita. [Sketch]
  2. Muovere in modo sinusoidale una sfera lungo la diagonale principale e una lungo la diagonale secondaria di una finestra quadrata. [Sketch]
  3. Muovere un punto lungo una circonferenza in senso orario usando le funzioni seno e coseno. Controllare la velocità con la posizione del cursore. Provare in senso antiorario. [Sketch]
  4. Disegnare un orologio analogico. [Sketch]
Approfondimento: Casualità organica.

Parte quarta

Principi di progettazione: ricorsione e complessità
Concetti di programmazione: funzioni e oggetti

In questa quarta parte studieremo le funzioni e la programmazione orientata agli oggetti e realizzeremo un esempio di sistema complesso. Questa parte corrisponde ai capitoli 8 e 9 del libro GSWP.
  1. Riprendere il programma che disegna una faccia e riscriverlo usando una funzione che ha come parametri la posizione, la dimensione e l'angolo di rotazione della faccia. Quindi generare, usando un ciclo, una popolazione casuale di facce. [Sketch]
  2. Studiare il codice della seguente funzione ricorsiva che disegna un albero. [Sketch]
  3. Realizzare un sistema complesso in cui gli attori sono dei cerchi caratterizzati da una posizione, una dimensione, un colore, una direzione e velocità di movimento. Ogni cerchio si muove, disegna sé stesso, e si connette mediante una linea a tutti e soli gli altri cerchi che lo intersecano. Ciò che emerge dal sistema complesso è la rete delle interazioni tra cerchi sovrapposti. Permettere di aggiungere, alla pressione del mouse, altri attori alla rete e di isolare, usando la tastiera, il solo sistema senza la rete di interazioni oppure la sola rete di interazioni senza il sistema. [Sketch]
Approfondimenti: Ricorsione e Complessità