1 % implementation of figure naming and figure transparency
2 string name,tag; name := ""; tag := "";
4 if tag="": filenametemplate (name & "%c.eps");
5 else: filenametemplate (name & "%c_" & tag & ".eps");
9 def figname(expr n) = name := n; updatefigname; enddef;
10 def figtag(expr t) = tag := t; updatefigname; enddef;
12 picture transparent_picture;
13 color transparent_color; transparent_color := 0.9white;
14 def drawtransparent(expr num) =
15 transparent_picture := currentpicture;
18 if tag="": filenametemplate (name & "%c_transparent.eps");
19 else: filenametemplate (name & "%c_" & tag & "_transparent.eps");
22 draw transparent_picture withcolor transparent_color;
28 def from(expr p,d,len) =
32 def dirs(expr p,d,len) =
36 def drawvertices(expr s,n) =
42 def drawfvertices(expr s,n,flags) =
44 draw vertex(PQ[i]) flags;
48 def vertex(expr p) = p withpen pencircle scaled 4pt enddef;
49 def drawemptyvertex(expr p) = unfill fullcircle scaled 4pt shifted p; draw fullcircle scaled 4pt shifted p; enddef;
50 def drawendpointvertex(expr p) = draw vertex(p) withcolor red; draw fullcircle scaled 6pt shifted p; enddef;
51 def createpath(expr p) = shakepath(p, 0.015cm,0.1cm) enddef;
52 vardef shakepath(expr p,d,l) =
54 path r; r := point(arctime 0 of p) of p;
56 for i:=l step l until arclength(p):
57 r := r--(point(arctime i of p) of p)+dir(angle(direction(arctime i of p) of p rotated 90))*d*b;
60 r--point(arctime arclength(p) of p) of p
63 pen normalpen; normalpen := pencircle scaled 0.6pt;
64 pen boldpen; boldpen := pencircle scaled 1.5pt;
65 pen bolderpen; bolderpen := pencircle scaled 2pt;
66 def dotline = withdots scaled 0.82 withpen boldpen enddef;
68 vardef unclosedbubblec(expr p,c) =
69 bubblec((p..reverse p..cycle),c)
72 vardef bubblec(expr p,c) =
74 path r; r := (point(arctime 0 of p) of p)+dir(angle(direction(arctime 0 of p) of p rotated 90))*c;
75 for i:=0.01cm step 0.025cm until arclength(p):
76 r := r..(point(arctime i of p) of p)+dir(angle(direction(arctime i of p) of p rotated 90))*c;
78 r..(point(arctime arclength(p) of p) of p)+dir(angle(direction(arctime arclength(p) of p) of p rotated 90))*c..cycle
81 vardef bubble(expr p) = bubblec(p,0.12cm) enddef;
82 vardef unclosedbubble(expr p) = unclosedbubblec(p,0.12cm) enddef;