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 path centersquare; centersquare := (-0.5,-0.5)--(0.5,-0.5)--(0.5,0.5)--(-0.5,0.5)--cycle;
50 def vertex(expr p) = p withpen pencircle scaled 4pt enddef;
51 def drawemptyvertex(expr p) = unfill fullcircle scaled 4pt shifted p; draw fullcircle scaled 4pt shifted p; enddef;
52 def drawendpointvertex(expr p) = draw vertex(p) withcolor red; draw fullcircle scaled 6pt shifted p; enddef;
53 def createpath(expr p) = shakepath(p, 0.015cm,0.1cm) enddef;
54 vardef shakepath(expr p,d,l) =
56 path r; r := point(arctime 0 of p) of p;
58 for i:=l step l until arclength(p):
59 r := r--(point(arctime i of p) of p)+dir(angle(direction(arctime i of p) of p rotated 90))*d*b;
62 r--point(arctime arclength(p) of p) of p
65 pen normalpen; normalpen := pencircle scaled 0.6pt;
66 pen boldpen; boldpen := pencircle scaled 1.5pt;
67 pen bolderpen; bolderpen := pencircle scaled 2pt;
68 def dotline = withdots scaled 0.82 withpen boldpen enddef;
70 vardef unclosedbubblec(expr p,c) =
71 bubblec((p..reverse p..cycle),c)
74 vardef bubblec(expr p,c) =
76 path r; r := (point(arctime 0 of p) of p)+dir(angle(direction(arctime 0 of p) of p rotated 90))*c;
77 for i:=0.01cm step 0.025cm until arclength(p):
78 r := r..(point(arctime i of p) of p)+dir(angle(direction(arctime i of p) of p rotated 90))*c;
80 r..(point(arctime arclength(p) of p) of p)+dir(angle(direction(arctime arclength(p) of p) of p rotated 90))*c..cycle
83 vardef bubble(expr p) = bubblec(p,0.12cm) enddef;
84 vardef unclosedbubble(expr p) = unclosedbubblec(p,0.12cm) enddef;