Morphing di poligoni

// height=200 lines=auto
var vertsA = [];  // vertici poligono iniziale
var vertsB = [];  // vertici poligono finale

function setup() {
   createCanvas(200,200);
   // crea vettori dei vertici
   for (var i=0;  i<6;  ++i) {
      var vA = createVector(random(width), random(height));
      vertsA.push( vA );
      var vB = createVector(random(width), random(height));
      vertsB.push( vB );
   }
}

function draw() {
   background(200);
   // visualizza l'interpolazione
   var t = norm( sin(frameCount/50), -1,1 );
   beginShape();
   for (var i=0;  i<vertsA.length;  ++i) {
      var v = p5.Vector.lerp( vertsA[i], vertsB[i], t );
      vertex( v.x, v.y );
   }
   endShape(CLOSE);
}
var 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.

var v = p5.Vector.lerp( vertsA[i], vertsB[i], t );

Calcola il vertice interpolato fra vertsA e vertsB alla posizione t.