â The Power of SVG · prototype pĂ©dagogique
Deux formes extrĂȘmes, une seule interpolation. Flubber calcule automatiquement
les Ă©tats intermĂ©diaires entre shapeA et shapeB â mĂȘme si les
tracĂ©s n'ont ni le mĂȘme nombre de points, ni la mĂȘme structure. Testez les quatre
façons de piloter la valeur t ci-dessous.
Le survol horizontal de la zone pilote directement la forme.
flubber.interpolate() prend deux tracés SVG (deux path d="...")
et renvoie une fonction : on lui passe un nombre entre 0 et 1, elle renvoie le tracé
intermĂ©diaire correspondant. Tout le travail â triangulation, correspondance des
points, gestion des formes de complexitĂ© diffĂ©rente â se fait sous le capot.
Ensuite, n'importe quel type d'entrée (souris, drag, slider, boucle d'animation)
peut piloter cette mĂȘme valeur t.
// 1. deux formes extrĂȘmes, en tant que chaĂźnes "d" de path SVG const shapeA = "M200,55 C275,55 345,100..."; // le blob const shapeB = "M200,50 L235,151 L342,153..."; // l'Ă©toile // 2. Flubber construit l'interpolateur une seule fois const interpolator = flubber.interpolate(shapeA, shapeB, { maxSegmentLength: 2 // plus la valeur est basse, plus c'est lisse }); // 3. n'importe quel input peut piloter t (0 Ă 1) function setT(t) { path.setAttribute("d", interpolator(t)); } // exemple : le curseur pilote t stage.addEventListener("mousemove", (e) => { const rect = stage.getBoundingClientRect(); const t = (e.clientX - rect.left) / rect.width; setT(Math.min(1, Math.max(0, t))); });
Pour l'atelier : remplacez shapeA et shapeB par les deux
extrĂȘmes de votre propre illustration (exportĂ©es en SVG depuis Figma ou Illustrator).
Contrairement Ă une interpolation classique de points d'ancrage, Flubber n'exige pas
que les deux tracĂ©s aient la mĂȘme structure â c'est ce qui le rend beaucoup plus
rapide à prendre en main qu'une vraie police variable pour prototyper l'idée.