|
|
1.1 root 1: To: cvw
2: Subject: ideal library
3:
4: There's also a library file that drag expects to be present,
5: called "drag". Do you mind if I install it in various ideal
6: libraries (various as in the machines I use)? Or perhaps
7: you'd like to look at it and install it yourself. Here it is:
8:
9:
10: .IS
11: ...libfile dash
12: idaline { # line p1 to p2, for use in arrowhead (p3 unused)
13: var p1, p2, p3;
14: conn p1 to p2;
15: }
16:
17: arrowhead {
18: var tl, hd, perp, strokes;
19: perp = 0.1*(tl-hd)/abs(tl-hd);
20: conn hd+cis(25)*perp to hd+cis(-25)*perp
21: using strokes-1 idaline { p2=hd; }<p1,p3>;
22: conn hd+cis(-25)*perp to hd;
23: }
24:
25: thickline {
26: var tl, hd, perp;
27: perp = .01*cis(90)*(tl-hd)/abs(tl-hd);
28: conn tl-perp to tl+perp
29: using 4 idaline { p2=p1+hd-tl; }<p1,p3>;
30: }
31:
32: dashline {
33: var tl, hd;
34: conn tl to hd
35: using int(abs(hd-tl)/.1 + .99) dash{}<start,end>;
36: }
37:
38: selfloop { # loop from c to itself, passing through e, with arrowhead
39: var c, e, h, i, c1, c2, c3, c4, s;
40: var B, C, D;
41: B ~ .6; C ~ .6; D ~ .2;
42: h = e + B*(e-c)*cis(90);
43: i = e + B*(e-c)*cis(-90);
44: c1 = C[c,h];
45: c4 = C[c,i];
46: c2 = D[e,h];
47: c3 = D[e,i];
48: spline c to c1 to c2 to c3 to c4 to c;
49: put arrowhead { hd=c; tl=c4; strokes=s; };
50: }
51:
52: selfloopc { # loop from a to b, passing through e, with arrowhead at b
53: # c is "center": ce is perpendicular to tangent at e
54: var a, b, c, d, e, h, c1, c2, c3, c4, s;
55: var A, C, D;
56: A ~ .8; C ~ .2; D ~ .4;
57: d = c - A*(e-c);
58: c1 = a + C*(a-d);
59: c4 = b + C*(b-d);
60: h = d + (c1-d)*abs(e-d)/abs((c1+c4)/2-d);
61: c2 = D[e,h];
62: c3 = e-(c2-e);
63: spline a to c1 to c2 to c3 to c4 to b;
64: put arrowhead { hd=b; tl=c4; strokes=s; };
65: }
66: .IE
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.