Hachurer un rectangle suivant certaines conditions

Suite à une demande sur la liste AmiTeX, voici la réponse en Metapost.

matthes.mp [ source brut ]

 input geometriesyr16;
 
 vardef hachurerectangle(expr pas,aa,bb)=
   pair AA,BB,CC,DD,EE;
   AA=aa;
   BB=(xpart(bb),ypart(aa));
   CC=bb;
   DD-CC=AA-BB;
   EE=rotation(AA,DD,-90);
   picture result;
   result=image(
     trace polygone(AA,BB,CC,DD);
     marque_p:="plein";
     pointe(AA,BB,CC,DD);
     for k=0 upto round(abs(CC-EE)/pas):
       trace segment(EE+pas*k*(1,0),AA+pas*k*(1,0)) cutbefore segment(AA,DD) cutafter segment(AA,BB)
       cutafter segment(BB,CC) withcolor orange;
     endfor;
     );
   result
 enddef;
 
 
Conversion au format PDF de matthes.1
 figure(0,0,10u,10u);
 trace hachurerectangle(2mm,u*(1,1),u*(5,3));
 trace hachurerectangle(5mm,u*(4,4),u*(8,8));
 fin;
 end