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.
// 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;
}
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 ?