La figure ci-dessous est une grille de Hermann inversée dont les bords ont été rendus flous (James Bergen). À l'intersection des lignes horizontales et verticales apparaissent des points qui scintillent...
La réalisation de cette image nécessite quelques ajustements, l'effet est sensible à la répartition des gris aux coins des carrés. Il faut ménager la plage sombre dans laquelle se forme l'illusion.
% Paramètres d'ajustement de l'image u = 25; % unité v = 0.3; % indice pour le décrochage du coin des carrés w = 0.015; % indice pour la profondeur du coin d = 0.1; % indice pour le premier niveau de gris e = 0.2; % indice pour la variation des gris n = 5; % nombre de niveau de gris def f(expr x) = x * ( 1 + 4 * e * ( 1 - x) ) enddef; def cadre (expr a,b) = (-1+a,-1){dir 180} ... (-1+b,-1+b) ... {dir 90}(-1,-1+a) -- (-1, 1-a){dir 90} ... (-1+b, 1-b) ... {dir 0}(-1+a, 1) -- (1-a, 1){dir 0} ... (1-b , 1-b) ... {dir -90}(1 , 1-a) -- (1, -1+a){dir -90} ... (1-b ,-1+b) ... {dir 180}(1-a, -1) -- cycle enddef; picture carre; carre := image( fill ((-1,-1)--(-1,1)--(1,1)--(1,-1)--cycle) scaled u withcolor f(d/(n+d))*white; for i:=1 upto n: fill cadre(v,w*(5-(i-1)*4/(n-1))) scaled (u-i) withpen pensquare scaled 1pt withcolor f((i+d)/(n+d))*white; endfor; ); beginfig(1); for j:=1 upto 9: for h:=1 upto 6: draw carre shifted (2*j*u,2*h*u); endfor; endfor; draw bbox(currentpicture) withcolor blue; endfig; end