Morphing di poligoni
// height=200 lines=auto
let verticiA = []; // vertici poligono iniziale
let verticiB = []; // vertici poligono finale
function setup() {
createCanvas(200,200);
// crea vettori dei vertici
for (let i=0; i<6; ++i) {
let vA = createVector(random(width), random(height));
verticiA[i] = vA;
let vB = createVector(random(width), random(height));
verticiB[i] = vB;
}
}
function draw() {
// visualizza l'interpolazione
background(220);
let t = norm( sin(frameCount/50), -1,1 );
beginShape();
for (let i=0; i<verticiA.length; ++i) {
let interpolato = p5.Vector.lerp( verticiA[i], verticiB[i], t );
vertex( interpolato.x, interpolato.y );
}
endShape(CLOSE);
}
let t = norm( sin(frameCount/50), -1,1 );
Normalizza un valore con andamento sinusoidale dipendente da frameCount: il valore di t oscillerà ciclicamente fra 0 e 1 anziché fra -1 e 1.
let interpolato = p5.Vector.lerp( verticiA[i], verticiB[i], t );
Calcola il vertice interpolato fra verticiA e verticiB alla posizione t.