%@AUTEUR: Jean-Louis Garcin %@DATE: 26 juin 2010 beginfig(1); path pc,gc, traitb,traith,inter,trait,traitv; numeric u,d, r,h; picture pic; %%%%% d=35; u=0.3cm; %%%% for r= 0 upto (d-1): pc := halfcircle scaled ((2*r)*u) rotated (-90); gc := halfcircle scaled ((2*r+2)*u) rotated (-90); for h= 0 upto (r-1): traitb := (0,h*u)-- (d*u,h*u); traith := (0,(h+1)*u)--(d*u,(h+1)*u); if ((r+h)/2) >floor((r+h)/2): inter:= buildcycle(traitb,pc,traith,gc); draw inter withcolor ((r+h)/(2.2*d))[black,white]; fill inter withcolor ((r+h)/(2.2*d))[black,white]; fi endfor; endfor; for r = (-3) downto (- d): pc := halfcircle scaled (2*(abs(r+1))*u) rotated (-90); gc := halfcircle scaled (2*(abs(r))*u ) rotated (-90); for h= -1 downto r+1 : traitb := (0,h*u)-- (d*u,h*u); traith := (0,(h+1)*u)--(d*u,(h+1)*u); if ((r+h)/2) =floor((r+h)/2): inter:= buildcycle(traitb,gc,traith,pc); draw inter withcolor ((-r-h)/(2.2*d))[black,white]; fill inter withcolor ((-r-h)/(2.2*d))[black,white]; fi endfor; endfor; for r= 1 upto d: gc := halfcircle scaled (2*r*u) rotated (-90); trait:= (0,(1-r)*u)-- (d*u,(1-r)*u); traitv:=(0,(1-r)*u)--(0,-(r*u)); inter:=buildcycle(traitv,trait,gc); fill inter withcolor ((2*r)/(2.2*d))[black,white]; draw inter withcolor ((2*r)/(2.2*d))[black,white]; endfor; pic:=currentpicture; draw pic xscaled (-1); endfig; end;