%% rajoute au chemin existant (eventuellement vide), en tournant dans
%% le sens trigo
%% syntaxe : x0 y0 r ang1 ang2 sarc
%% /sarc    {      %% x0 y0 r ang1 ang2 
%%    5 -1 roll %% y0 r ang1 ang2 x0 
%%    xunit mul
%%    5 1 roll
%%    4 -1 roll
%%    yunit mul 
%%    4 1 roll
%%    3 -1 roll
%%    xunit mul 
%%    3 1 roll
%%    arc
%% } def
%% 19-06-06 %% %% syntaxe : x0 y0 r ang1 ang2 sarc_
%% 19-06-06 %% /sarc_    {                %% x0 y0 r ang1 ang2 
%% 19-06-06 %% 	  0 0 5 copy pop pop     %% x0 y0 r ang1 ang2 0 0 r ang1 ang2 
%% 19-06-06 %% 	  10 -1 roll
%% 19-06-06 %% 	  10 -1 roll
%% 19-06-06 %% 	  yunit mul exch
%% 19-06-06 %% 	  xunit mul exch
%% 19-06-06 %% 	  translate %rlineto
%% 19-06-06 %% 	  3 -1 roll
%% 19-06-06 %% 	  xunit mul            %% pour le rayon, on prend l'echelle sur Ox
%% 19-06-06 %% 	  3 1 roll
%% 19-06-06 %% 	  arc
%% 19-06-06 %% 	  pop pop pop
%% 19-06-06 %% } def
%% 19-06-06 %% %% syntaxe : x0 y0 r ang1 ang2 sarc_
%% 19-06-06 %% /sarc_    {                %% x0 y0 r ang1 ang2 
%% 19-06-06 %% 3 dict begin
%% 19-06-06 %% 	  /ang2 exch def
%% 19-06-06 %% 	  /ang1 exch def
%% 19-06-06 %% 	  /r exch def
%% 19-06-06 %% 	  jtoppoint
%% 19-06-06 %% 	  r xunit mul 
%% 19-06-06 %% 	  ang1 ang2
%% 19-06-06 %% 	  arc
%% 19-06-06 %% end
%% 19-06-06 %% } def
%% 19-06-06 %% 
%% 19-06-06 %% %% syntaxe : x0 y0 r ang1 ang2 sarc
%% 19-06-06 %% /sarc {
%% 19-06-06 %% gsave
%% 19-06-06 %% newpath
%% 19-06-06 %% 	  5 copy pop dup   %% x0, y0, r, ang1, ang2, x0, y0, r, ang1, ang1
%% 19-06-06 %% 	  cos 5 1 roll     %% x0, y0, r, ang1, ang2, cos(ang1), x0, y0, r, ang1
%% 19-06-06 %% 	  sin exch dup     %% x0, y0, r, ang1, ang2, cos(ang1), x0, y0, sin(ang1),r, r
%% 19-06-06 %% 	  6 1 roll         %% x0, y0, r, ang1, ang2, r, cos(ang1), x0, y0, sin(ang1),r
%% 19-06-06 %% 	  mul add 4 1 roll %% x0, y0, r, ang1, ang2, y0 + r sin(ang1), r, cos(ang1), x0
%% 19-06-06 %% 	  3 1 roll mul add %% x0, y0, r, ang1, ang2, y0 + r sin(ang1), x0 + r cos(ang1)
%% 19-06-06 %% 	  exch
%% 19-06-06 %% 	  smoveto
%% 19-06-06 %% 	  sarc_
%% 19-06-06 %% stroke
%% 19-06-06 %% grestore
%% 19-06-06 %% } def
%% 23-06-06 %% %% syntaxe : x0 y0 r ang1 ang2 sarc_
%% 23-06-06 %% /sarc_ {
%% 23-06-06 %% 4 dict begin
%% 23-06-06 %% 	  /ang2 exch def
%% 23-06-06 %% 	  /ang1 exch def
%% 23-06-06 %% 	  /r exch def
%% 23-06-06 %% 	  /A defpoint
%% 23-06-06 %% 
%% 23-06-06 %% 	  ang1 A jtoppoint r xunit mul cpoint
%% 23-06-06 %% 	  lineto
%% 23-06-06 %% 	  A jtoppoint
%% 23-06-06 %% 	  r xunit mul 
%% 23-06-06 %% 	  ang1 ang2
%% 23-06-06 %% 	  arc
%% 23-06-06 %% end
%% 23-06-06 %% } def
%% 23-06-06 %% 
%% 23-06-06 %% %% syntaxe : x0 y0 r ang1 ang2 sarc
%% 23-06-06 %% /sarc {
%% 23-06-06 %% 5 dict begin
%% 23-06-06 %% gsave
%% 23-06-06 %% newpath
%% 23-06-06 %% 	  dup isstring {
%% 23-06-06 %% 	     /option exch def
%% 23-06-06 %% 	  } if
%% 23-06-06 %% 	  
%% 23-06-06 %% 	  /ang2 exch def
%% 23-06-06 %% 	  /ang1 exch def
%% 23-06-06 %% 	  /r exch def
%% 23-06-06 %% 	  /A defpoint
%% 23-06-06 %% 	  A circ2
%% 23-06-06 %% 	  ang1 A jtoppoint r xunit mul cpoint
%% 23-06-06 %% 	  moveto
%% 23-06-06 %% 	  A r ang1 ang2
%% 23-06-06 %% 	  sarc_
%% 23-06-06 %% 	  currentdict /option known {
%% 23-06-06 %% 	     arrowcpathpoints
%% 23-06-06 %% 	     option 
%% 23-06-06 %% 	     gere_arrowhead
%% 23-06-06 %% 	  } if
%% 23-06-06 %% 
%% 23-06-06 %% stroke
%% 23-06-06 %% grestore
%% 23-06-06 %% end
%% 23-06-06 %% } def
%% syntaxe : x0 y0 r ang1 ang2 sarc_
/sarc_ {
4 dict begin
   /ang2 exch def
   /ang1 exch def
   /r exch def
   /A defpoint
   A jtoppoint
   r xunit mul 
   ang1 ang2
   arc
end
} def
%% syntaxe : x0 y0 r ang1 ang2 sarc
/sarc {
5 dict begin
gsave
newpath
   dup isstring {
      /option exch def
   } if
   
   /ang2 exch def
   /ang1 exch def
   /r exch def
   /A defpoint
%   A circ2
   ang1 A jtoppoint r xunit mul cpoint
   moveto
   A r ang1 ang2
   sarc_
   currentdict /option known {
      newarrowpath
      ang1 A jtoppoint r xunit mul cpoint ptojpoint
      ang1 A .1 add jtoppoint r xunit mul cpoint ptojpoint
      arrowpath0
      ang2 .1 sub A jtoppoint r xunit mul cpoint ptojpoint
      ang2 A jtoppoint r xunit mul cpoint ptojpoint
      arrowpath1
      option 
      gere_arrowhead
   } if
stroke
grestore
end
} def
 
  |