%@Auteur: Philippe Ivaldi %@Date: 24 mars 2006 tertiarydef a << b = a, b enddef; def even (expr a) = not odd(a) enddef; %%Marquage d'un point avec des options vardef marque(expr p)(text t) = %% Trace une marque translatée du pair p avec les options t %% Options t: %% "type"<<"{+|x|-|o|.||}" (type de marque) %% angle<"&ditto¤t&ditto); fi; fi; i := i + 1; endfor; if odd(i): errmessage("marque: nombre d'argument impair ->"&decimal(i)); fi; if ((typemarque="+") or (typemarque="x")): $:=(0,0)--echelle*cm*(-1/20,0)--(0,0)--echelle*cm*(1/20,0)--(0,0)-- echelle*cm*(0,1/20)--(0,0)--echelle*cm*(0,-1/20)--cycle; if typemarque="x" : angle:=angle+45;fi; elseif ((typemarque="-") or (typemarque="|")) : $:=echelle*cm*(-1/20,0)--echelle*cm*(1/20,0); if typemarque="|" : angle:=angle+90;fi; elseif typemarque="o" : $:=fullcircle scaled (echelle*cm/20); elseif typemarque="." : $:=(0,0); else : errmessage("marque : type iconnu ->"&ditto&typemarque&ditto); fi; draw ($ rotated angle shifted p) withcolor couleur withpen pencircle scaled epaisseur; enddef; beginfig(1); marque((1cm,1cm))("echelle"<<4); marque((0,0))("type"<<"+","angle"<<45,"echelle"<<4,"couleur"<