input geometriesyr16; vardef comptage(expr ll,hh,pp)= save compt; picture compt; color A,B,C,D,E,F,G,H; color pts[]; pts1=(1/hh)[D,E]; pts2=(1/hh)[C,H]; compt=image( trace Pave(A,B,C,D,E,F,G,H)(pp/4,ll/4,hh/4) withcolor gris; %horizontal longueur trace segment(pts1+(1/ll)*(H-E),pts2); trace segment(pts1+(1/pp)*(B-C),pts2+(1/pp)*(B-C)); trace segment((1/pp)[C,B],(1/pp)[D,A]+(1/ll)*(C-D)); trace chemin((1/hh)[C,H],C,(1/pp)[C,B]); for k=1 upto ll: trace segment((k/ll)[pts1,pts2],(k/ll)[pts1,pts2]+(1/pp)*(B-C)); trace segment((k/ll)[pts1,pts2]+(1/pp)*(B-C),(k/ll)[pts1,pts2]+(1/pp)*(B-C)+(1/hh)*(D-E)); endfor; %horizontal profondeur trace segment(pts1+(1/pp)*(A-D),pts1+A-D); trace segment(pts1+(1/ll)*(C-D),pts1+A-D+(1/ll)*(C-D)); trace segment((1/ll)[A,B],(1/ll)[A,B]+((pp-1)/pp)*(D-A)); trace chemin((1/hh)[A,F],A,(1/ll)[A,B]); for k=0 upto (pp-2): trace segment((1/hh)[A,F]+(k/pp)*(D-A),(1/hh)[A,F]+(k/pp)*(D-A)+(1/ll)*(B-A)); trace segment((1/hh)[A,F]+(k/pp)*(D-A)+(1/ll)*(B-A),(k/pp)*(D-A)+(1/ll)[A,B]); endfor; %vertical trace segment((1/pp)[E,F],(1/pp)[E,F]+((hh-1)/hh)*(D-E)); trace segment((1/ll)[E,H],(1/ll)[E,H]+((hh-1)/hh)*(D-E)); trace segment((1/pp)[E,F]+(1/ll)*(H-E),(1/pp)[E,F]+(1/ll)*(H-E)+((hh-1)/hh)*(D-E)); trace chemin((1/pp)[E,F],E,(1/ll)[E,H]); for k=0 upto (hh-2): trace segment((1/pp)[E,F]+(k/hh)*(D-E),(1/pp)[E,F]+(k/hh)*(D-E)+(1/ll)*(H-E)); trace segment((1/ll)[E,H]+(k/hh)*(D-E),(1/ll)[E,H]+(k/hh)*(D-E)+(1/pp)*(F-E)); endfor; ); compt enddef; figureespace(-10u,-10u,10u,10u); Initialisation(5,30,22,500); trace comptage(1,1,1); finespace; figureespace(-10u,-10u,10u,10u); Initialisation(5,30,22,400); trace comptage(6,4,5); finespace; figureespace(-10u,-10u,10u,10u); Initialisation(5,30,22,500); trace comptage(4,8,3); finespace; figureespace(-10u,-10u,10u,10u); Initialisation(5,60,40,500); trace comptage(7,4,2); finespace; end