MetaPost / Hachures

Le principe est le suivant : on balaye la figure avec une droite en assurant la découpe finale aux frontières de la figure avec clip. Il est possible de définir, à l'intérieur de la macro, de nouveaux styles de hachures, il suffit pour cela d'allonger (ou modifier) la liste des alternatives suivant la valeur du paramètre trace.

fichier mp fichier zip

hachures.mp

hachures.1 hachures.2
 
 %@AUTEUR: Christophe Poulain (4 février 2003)
 
 vardef hachurage(expr chemin, angle, ecart, trace)suffix couleur =
   save $;
   picture $;
   path support;
   support=(((-37cm,0))--((37cm,0))) rotated angle;
   if trace=1:
     drawoptions(dashed evenly);
   elseif trace=2:
     drawoptions(dashed dashpattern(on12bp off6bp on3bp off6bp));
   fi;
   $ = image(
     for j=-200 upto 200:
      if ((support shifted (ecart*j*(1,0))) intersectiontimes chemin)<>(-1,-1):
        draw support shifted (ecart*j*(1,0)) 
            withcolor if str couleur="":(0,0,0) else:couleur fi;
      fi
     endfor;
   );
   clip $ to chemin;
   drawoptions();
   $
 enddef;
 
 color rouge;
 rouge = (1,0,0);
 
 
Conversion au format PDF de hachures.1
Vers la liste des images
 beginfig(1);
   path p,q;
   p = fullcircle scaled 3cm;
   draw hachurage(p,45,2mm,0)rouge;
   draw p;
   q = (p scaled 0.5) shifted (4cm,2cm);
   draw hachurage(q,30,4mm,1);
   draw q;
 endfig;
 
 def dessine(expr p,a,e,t,s)(text couleurs)  =
     save co,n;
     color co[];
     numeric n;
     n := 0; forsuffixes c = couleurs: co[incr n] = c; endfor;
     if n = 1: co2 = co1; fi;
     draw hachurage(p,a,e,t) co1;
     draw p withpen pencircle scaled s withcolor co2;
 enddef;
     
 
Conversion au format PDF de hachures.2
Vers la liste des images
 beginfig(2);
  path carre,cercle;
  cercle = fullcircle scaled 2cm;
  carre = ((0,0)--(3cm,0)--(3cm,3cm)--(0,3cm)--cycle) shifted (3cm,-1cm);
  dessine(((3cm,1cm)..(4cm,3cm)..(1cm,2cm)..cycle),30,4mm,3,1pt,black);
  dessine(cercle,60,3mm,0,2pt,green);
  dessine(carre,45,5mm,2,1pt,blue,red);
 endfig;
 end
 

 

Validation CSS Validation XHTMLChristophe Poulain — Dernière modification : 11 novembre 2008 (0.06s - 3949536 - vendredi 9 janvier 2009) vers le haut