1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
% pifpaf.mp
% L. Nobre G.
% 2010
prologues := 1;
beginfig(1);
numeric u, siz, lena, lenb, lenc, anga, angb, angc, astep;
u = 7mm;
siz = 12u;
lena = 9u;
lenb = 8u;
lenc = 4u;
astep = 1.7;
z1 = (-lenb,siz-lena);
z2 = (lenb,siz-lena);
path circa, circb;
numeric auxa, auxb, auxc, lend;
auxa = 2*(lena+2*lenc);
auxb = 2*lena;
circa = fullcircle scaled auxa shifted z1;
circb = fullcircle scaled auxb shifted z2;
z3 = circa intersectionpoint circb;
anga = angle(z3-z1);
angb = 180-angle(z3-z2);
auxc = lena +-+ (lenb-lenc);
angc = angle(lenb-lenc,auxc);
show (anga,angc,angb);
z4 = z2+(lenc-lenb,auxc);
z5 = z1+(lenb-lenc,auxc);
draw z1--z2--z4--z5--cycle;
draw z1--z2--z3--cycle;
z6 = z1+lena*dir(anga);
z7 = z2+lena*dir(180-angb);
z8 = 0.5[z6,z7];
lend = siz-lena+auxc;
z9 = z8+lend*dir(anga-90);
draw z8--z9;
draw origin withpen pencircle scaled 3pt;
numeric i, diamc;
pair parp, intp, pa, pb;
diamc = 4*lenc;
for i=anga step astep until angc:
parp := z1+lena*dir(i);
circa := fullcircle scaled diamc shifted parp;
intp := circa intersectionpoint circb;
pa := 0.5[parp,intp];
pb := lend*unitvector((ypart (intp-parp),-xpart (intp-parp)));
draw pa--(pa+pb);
draw (-xpart (pa+pb),ypart (pa+pb)) withpen pencircle scaled 2pt;
draw (pa+pb) withpen pencircle scaled 2pt;
endfor;
endfig;
end.
|