N°16 / Atelier Creative Coding / three.js + Canvas 2D

Zellige → pixel → volume

Un motif zellige commence a plat en Canvas 2D. En zoomant (scroll ou slider), chaque tesselle s'extrude progressivement en geometrie 3D via three.js. La transition algorithmique revele la profondeur cachee dans le pattern.

WebGL non disponible.
Cette piece necessite un navigateur compatible three.js.
0%
30
Voir le code source (algorithme d'extrusion)
// Transition 2D -> 3D : chaque tesselle du zellige
// est convertie en geometrie extrudee
function extrudeTile(shape2D, depth) {
  const extrudeSettings = {
    depth: depth,
    bevelEnabled: true,
    bevelThickness: depth * 0.1,
    bevelSize: depth * 0.05,
    bevelSegments: 2
  };
  return new THREE.ExtrudeGeometry(shape2D, extrudeSettings);
}

// Pattern zellige : etoile a 8 branches + croix
function createZelligeStar(cx, cy, r) {
  const shape = new THREE.Shape();
  const pts = 16;
  for (let i = 0; i < pts; i++) {
    const angle = (i / pts) * Math.PI * 2;
    const radius = i % 2 === 0 ? r : r * 0.55;
    const x = cx + Math.cos(angle) * radius;
    const y = cy + Math.sin(angle) * radius;
    i === 0 ? shape.moveTo(x, y) : shape.lineTo(x, y);
  }
  shape.closePath();
  return shape;
}
Defi

Modifiez le nombre de branches de l'etoile zellige (variable pts) et observez comment l'extrusion 3D change de caractere. Essayez 12, 24, ou 6 branches. Quel nombre produit le volume le plus proche d'un zellige authentique ?

Explorer tous les cours