Ableton Certified Trainer, Music Technologist, Creative Coder, Educator

Category: Processing

  • Controllare le trasformazioni: pushMatrix() e popMatrix()

    Le funzioni di trasformazione viste nell’ultimo post ci hanno dato prova di come sia possibile andare a modificare dinamicamente il sistema di coordinate di Processing. In questo articolo, introdurremo due nuove funzioni chiamate pushMatrix() e popMatrix() che, come vedremo insieme, ci permettono di avere maggiore controllo sulle trasformazioni. Matrici Ogni volta che usiamo le funzioni translate(), rotate() e scale() andiamo a modificare una matrice – in […]

  • Trasformazioni: translate(), rotate(), scale()

    Abbiamo già avuto modo all’inizio del percorso base di prendere esplorare il sistema di coordinate in Processing. Una cosa che non abbiamo affrontato in modo approfondito è che questo sistema non è statico. Esistono, infatti delle funzioni dette trasformazioni che ci permettono di modificare il nostro impianto di base. Tali funzioni sono translate(), rotate() e scale() […]

  • Funzioni ricorsive

    In programmazione definiamo ricorsive quelle funzioni che richiamo se stesse all’interno di un programma. A parole si tratta di un concetto molto semplice ma è bene fare qualche esempio per fugare ogni possibile dubbio. Prima di procedere è bene puntualizzare che quando creiamo e usiamo queste funzioni dobbiamo fare attenzione a inserire sempre una condizione di uscita altrimenti lo sketch andrà in StackOverflowError. […]

  • sin() e cos(): onde e funzioni cicliche

    Rimaniamo nel campo della trigonometria e analizziamo le funzioni sin() e cos() che, rispettivamente, ci consentono di calcolare il seno e il coseno di un angolo. Entrambe le funzioni necessitano di un solo parametro: la misura di un angolo espressa in radianti e restituiscono un numero float il cui valore è sempre compreso tra -1.0 e 1.0. Con questo snippet […]

  • Angoli: randians() e degrees()

    Prima di passare a studiare funzioni matematiche come sin(), cos() e tan() che, come vedremo, potranno essere molto utili per i nostri esperimenti con Processing, è necessario fare una breve premessa sugli angoli. La maggior parte delle persone è abituata a misurare gli angoli con i gradi (in inglese degrees): un angolo retto è 90°, un […]

  • 2D Perlin Noise

    Nei due post precedenti abbiamo sempre usato la funzione noise() in modo mono dimensionale. È arrivato il momento di fare un passo in avanti e aggiungere la seconda dimensione. Ripasso: 1D Perlin Noise Quando parliamo di Perlin Noise mono dimensionale dobbiamo immaginare i valori su una linea temporale orizzontale; quando noi chiediamo alla funzione di restituirci un determinato […]

  • Altri esempi con la funzione noise()

    Nell’ultimo post abbiamo analizzato la differenza tra la funzione random() e noise(). La prima, vi ricordo, restituisce dei valori assolutamente casuali che dipendono dai parametri che passiamo alla funzione; la seconda, invece, ci permette di avere una sorta di casualità controllata. I valori che vengono restituiti dalla funzione noise() hanno due caratteristiche fondamentali: sono correlati tra loro e hanno sempre […]

  • Random e Perlin Noise

    In passato abbiamo utilizzato la funzione random() per rendere più interessanti i nostri sketch. Per fare un breve ripasso: vi ricordo che tale funzione accetta uno o due argomenti e restituisce sempre un numero casuale di tipo float. random(10); darà come risultato un numero compreso tra 0 e 10 mentre random(5, 10); restituirà un valore casuale compreso tra un minimo […]

  • Modulo e probabilità

    L’ultima volta che abbiamo parlato di operatori matematici è stato un po’ di tempo fa. Prima di procedere con nuovi argomenti, però, è necessario studiare ancora un paio di cose legate al mondo della matematica: con il post di oggi approfondiremo l’operatore modulo e scopriremo come effettuare un semplice calcolo di probabilità nei nostri sketch. Modulo L’operatore modulo – che viene indicato dal […]

  • Librerie: estendere le funzionalità di Processing

    È possibile estendere le funzionalità di base di Processing utilizzando delle librerie esterne. Una libreria non è altro che un insieme di classi, funzioni e variabili pensate e progettate con il preciso scopo di semplificare l’esecuzione di determinate operazioni che, se programmate da zero, renderebbero il nostro programma troppo verboso. L’idea che sta alla base delle librerie è di […]