p5.js
promemoria
per artisti visivi
struttura di base
// eseguito una volta prima del setup
function preload(){
// img = loadImage(percorsoFileBitmap);
// snd = loadSound(percorsoFileAudio);
}
// eseguito una volta all'avvio o dopo il preload
function setup(){
// createCanvas(larghezza, altezza);
// inizializzazioni
}
// eseguito continuamente dopo il setup
function draw(){
// ciclo di rendering
}
variabili di sistema
windowWidth / windowHeight
// larghezza / altezza dell'interno della finestra
width / height
// larghezza / altezza del canvas
frameCount
// numero di fotogrammi dall'avvio dello sketch
mouseX / mouseY
// posizione orizzontale / verticale del mouse
key
// ultimo carattere digitato sulla tastiera
keyCode
// ultimo tasto premuto: BACKSPACE, DELETE, ENTER
// TAB, ESCAPE, SHIFT, CONTROL, OPTION, ALT,
// UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW
eventi di sistema
// tasto premuto
function keyPressed(){
}
// mouse spostato senza pulsante premuto
function mouseMoved(){
}
// tasto del mouse premuto
function mousePressed(){
}
// tasto del mouse premuto e rilasciato
function mouseClicked(){
}
// dimensioni della finestra modificate
function windowResized(){
// resizeCanvas(windowWidth, windowHeight);
}
spazio 2D
-
coordinate
-
angoli in radianti
push(); // salva stili e trasformazioni correnti
translate(x, y); // traslazione
scale(x, y); // scalatura
rotate(angolo); // rotazione
// istruzioni di disegno
pop(); // ripristina stili e trasformazioni
angleMode(DEGREES); // deafult: RADIANS
colore
background(colore); // colora lo sfondo
fill(colore); // imposta colore di riempimento
noFill(); // disabilita il riempimento
stroke(colore); // imposta colore dei contorni
noStroke(); // disabilita il disegno dei contorni
fill('red'); // imposta colore con nome inglese
fill('#222222'); // valore esadecimale
fill(grigio);
fill(grigio, alfa);
fill(rosso, verde, blu);
fill(rosso, verde, blu, alfa);
colorMode(HSL, maxH, maxS, maxL, maxA);
fill(tono, saturazione, chiarezza, alfa);
colorMode(HSB, maxH, maxS, maxB, maxA);
fill(tono, saturazione, brillantezza, alfa);
colorMode(RGB, 255); // modalità cromatica di default
variabileColore = color(120, 50, 90);
tono (H), chiarezza (L), brillantezza (B)
forme
ellipseMode(CORNER); // default: CENTER
rectMode(CENTER); // default: CORNER
strokeWeight(spessore);
// imposta lo spessore dei contorni in pixel
line(x1, y1, x2, y2); // linea
ellipse(x, y, larghezza, altezza); // ellisse
rect(x, y, larghezza, altezza); // rettangolo
arc(x, y, larghezza, altezza, inizio, fine); // arco
beginShape(); // inizia definizione vertici poligono
vertex(x1, y1);
vertex(x2, y2);
vertex(x3, y3);
// altri vertici
endShape(CLOSE); // termina definizione (e disegna)
tipografia
font = loadFont(percorsoFile);
// carica font in formato TTF o OTF
textFont(font, dimensione);
// imposta il font e la dimensione dei caratteri
textSize(dimensione);
// imposta solo la dimensione dei caratteri
textAlign(orizzontale, verticale);
// orizzontale: LEFT (default), CENTER or RIGHT
// verticale: TOP, BOTTOM, CENTER or BASELINE (default)
text("testo", x, y);
text("testo multilinea", x, y, larghezza, altezza);
-
line()
-
ellipse()
-
rect()
-
arc()
-
vertex()
-
text()
feedback non grafico
print("testo: " + variabile);
// visualizza testo e dati nella console
// doppia barra per commentare il codice
matematica
+ - / * // operatori matematici di base
random(minimo, massimo); // numero casuale
noise(x, y, z); // valore Perlin noise fra 0 e 1
round(valore); // arrotonda a intero più vicino
map(valore, attualeA, attualeB, nuovoA, nuovoB);
// mappa un valore da un intervallo (A,B) a un altro
dist(x1, y1, x2, y2);
// calcola distanza fra due punti
logica se/allora
if (test) {
istruzioni
}
== // uguale a
!= // diverso da
> // maggiore di
< // minore di
>= // maggiore o uguale
<= // minore o uguale
&& // entrambi operandi true
|| // un operando true
! // inverte operando
logica cicli for
for (avvio; test; modifica) {
istruzioni
}
// esempio
for (var i = 0; i < 10; i++) {
print(i);
}