La règle et le compas comme premier langage formel
Les artisans qui ont créé les zellige de la mosquée Bou Inania à Fès au XIVe siècle n'avaient pas d'ordinateurs. Ils avaient des règles, des compas, et un corpus de méthodes de construction transmises par l'apprentissage. Ce corpus est, dans sa logique, un langage formel : un ensemble de règles précises qui, appliquées, produisent une famille de motifs.
Ce qui est frappant aujourd'hui, c'est que ces règles de construction correspondent exactement aux structures que les algorithmes génératifs utilisent : translation, rotation, réflexion, récursion, contrainte de pavage.
Les groupes de symétrie du plan
L'outil mathématique central pour comprendre les motifs géométriques islamiques est la classification des pavages du plan. Il existe exactement 17 groupes de symétrie du plan (wallpaper groups), chacun décrivant une combinaison différente de translations, rotations et réflexions. La plupart des motifs du zellige, de l'arabesque et de la géométrie islamique utilisent ces groupes.
Cela signifie qu'un programme qui implémente ces groupes peut générer des motifs dans l'esprit de cette tradition — pas en copiant, mais en partageant la même logique sous-jacente.
La cellule fondamentale
Tout motif islamique complexe peut être décomposé en une cellule fondamentale (le motif de base) et une règle de réplication (comment cette cellule se répète dans le plan). La cellule elle-même est construite par des opérations géométriques précises : subdivision d'un polygone régulier, traçage de diagonales à des angles spécifiques, construction d'étoiles à N branches.
En code, cela se traduit par deux fonctions : une qui dessine la cellule, une qui l'applique en grille.
function drawCell(cx, cy, size) {
// Étoile à 6 branches (exemple simplifié)
push(); translate(cx, cy);
beginShape();
for (let i = 0; i < 12; i++) {
let a = i * PI/6;
let r = (i % 2 === 0) ? size : size * 0.4; // alterne pointe / creux
vertex(cos(a) * r, sin(a) * r);
}
endShape(CLOSE);
pop();
}
function drawGrid(cols, rows, size) {
for (let c = 0; c < cols; c++) {
for (let r = 0; r < rows; r++) {
drawCell(c * size * 1.73, r * size * 2 + (c % 2) * size, size);
}
}
}
Zellige vs arabesque vs moucharabieh
Ces trois formes partagent une logique géométrique mais ont des usages et des matériaux distincts :
| Forme | Matériau | Logique | Propriété distinctive |
|---|---|---|---|
| Zellige | Céramique découpée | Pavage plan | Couleur, joint, texture d'émail |
| Arabesque | Plâtre sculpté ou peint | Entrelacs infinis | Continuité des lignes |
| Moucharabieh | Bois tourné | Grille de filtrage | Rapport plein/vide, lumière |
En code, les trois partagent la même structure de base (cellule + répétition), mais les contraintes visuelles diffèrent.
Le code comme outil d'exploration
Ce qui rend le creative coding particulièrement intéressant pour ces formes : on peut explorer des configurations impossibles à la main. Qu'est-ce qui se passe si le rapport pointe/creux d'une étoile à 8 branches varie lentement dans le temps ? Si la couleur de chaque cellule dépend de sa position ? Si la grille n'est pas parfaitement régulière mais légèrement perturbée par du bruit de Perlin ?
Ce ne sont pas des variations qui dénaturent la tradition — ce sont des extensions qui en révèlent la structure profonde.
Voir l'œuvre ZELLIGE KHATIM → · Tuto tessellation → · Le zellige comme algorithme → · Parler de votre projet →