Inversion d’un damier

Auteur ou autrice : Maxime Chupin.

Mise en ligne le 11 mai 2025

Image du résultat de l’exemple

Représentation de l'inversion géométrique d'un damier. L'inspiration provient de la vidéo de Mickaël Launay sur le sujet.

Code


%@author: Maxime Chupin
%@date: 2025-05-11
%@title: Inversion d'un damier
u:=1cm;

% les paramètres du damier 
N:=40;
inverseParam:=2u;
K:=2;
hauteur := 5*u;
deltaSquare := hauteur/N;

% definition de la transformation géométrique inverse
pair O;
O:=(0,0);

vardef inverse(expr P) =
    save s; numeric s; s = abs(P - O);
    O + (P - O) / s * inverseParam / s * inverseParam
enddef;

% la brique de base : inverse d'un carré du damier
vardef inverseCarre(expr i,j)=
    save p,c;
    pair p[];
    path c;
    string s;
    p[0]=(-deltaSquare/2,-deltaSquare/2)+(i,j)*deltaSquare;
    p[1]=(deltaSquare/2,-deltaSquare/2)+(i,j)*deltaSquare;
    p[2]=(deltaSquare/2,deltaSquare/2)+(i,j)*deltaSquare;
    p[3]=(-deltaSquare/2,deltaSquare/2)+(i,j)*deltaSquare;
    c:=for k =0 upto 3:
        for l=0 upto K:
            inverse(((1-l/K)*p[k]+(l/K)*p[(k+1) mod 4]))
            if(l<K): .. fi
        endfor
        if(k<3): -- else: --cycle fi 
    endfor;
    c
enddef;

% on parcours les cases du damier
beginfig(1);
k:=0;
for i=-N/2 upto N/2:
    for j=-N/2 upto N/2:
        k:=k+1;
        fill inverseCarre(i,j) withcolor (k mod 2 )*white + (1-(k mod 2))*black;
        fill inverseCarre(-i,-j) withcolor (k mod 2 )*white + (1-(k mod 2))*black;
    endfor
endfor
clip currentpicture to
(((-hauteur/2,-hauteur/2)--(hauteur/2,-hauteur/2)--(hauteur/2,hauteur/2)--(-hauteur/2,hauteur/2)--cycle) 
scaled 14);
endfig;

end.

Mots clés : inversiongéométrie

Fichiers


inverse-1.pdf

363.45 KB

Télécharger l’archive complète