8 def draw_slur(expr a,b,d) =
9 beginchar(0,0,0,0) "Embedded mf";
13 save alpha; alpha=angle(z2-z1);
14 save len; len=length(z2-z1);
16 z4=(len/2,len*ybow*d);
18 save beta; beta=abow*angle(z4-z3);
19 penpos3(thin,90+beta);
21 penpos5(thin,90-beta);
24 boogje = z3l{dir(beta)}..z4l{right}..z5l{dir(-beta)}
25 ..z5r{dir(180-beta)}..z4r{left}
26 ..z3r{dir(180+beta)}..cycle;
28 boogje := boogje rotated alpha;
29 % silly mo*tex convenction
30 % boogje := boogje shifted ((x1-x2)/2,0);
39 def xdraw_slur(expr a,b,d) =
40 beginchar(0,0,0,0) "Embedded mf";
44 save alpha; alpha=angle(z3-z1);
45 z2=(1/2[x1,x3],1/2[y1,y3])+d*ybow*(x3-x1)*dir(alpha+90);
46 save beta; beta=d*sign(y3-y1)*abow*angle(z2-z1)-alpha;
47 % message "d: "&decimal d;
48 % message "dy: "& decimal sign(y3-y1);
49 % message "alpha: "&decimal alpha;
50 % message "beta: "&decimal beta;
51 penpos1(thin,alpha+beta+90);
52 penpos2(thick,alpha+90);
53 penpos3(thin,alpha-beta+90);
55 fill z1l{dir(alpha+beta)}..z2l{dir(alpha)}
56 ..z3l{dir(alpha-beta)}..z3r{dir(180+alpha-beta)}
57 ..z2r{dir(180+alpha)}..z1r{dir(180+alpha+beta)}