Inversion d’un damier
Auteur ou autrice : Maxime Chupin.
Mise en ligne le 11 mai 2025
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