1 |
beginfig(1); |
beginfig(1); |
2 |
|
|
|
mrad = 200; |
|
3 |
|
|
4 |
path ucircle = fullcircle shifted (.5,.5); |
mrad = 100; |
5 |
|
|
6 |
|
path ucircle; |
7 |
|
ucircle := fullcircle shifted (.5,.5); |
8 |
|
|
9 |
h = 250; |
h = 250; |
10 |
|
|
11 |
vardef getcoord(expr s, e) = |
vardef getcoord(expr s, e) = |
12 |
save tp; |
save tp; |
13 |
|
save cp; |
14 |
picture tp; |
picture tp; |
15 |
|
path cp; |
16 |
tp := currentpicture; |
tp := currentpicture; |
17 |
clip tp to unitsquare xscaled 600 yscaled (e-s) shifted (-50,s); |
cp := unitsquare xscaled 1000 yscaled (e-s) shifted (-50,s); |
18 |
xpart(left tp) |
clip tp to cp; |
19 |
|
% show bbox(tp); |
20 |
|
xpart(urcorner(tp)) |
21 |
enddef; |
enddef; |
22 |
|
|
23 |
vardef addcircle(expr rad) = |
vardef addcircle(expr rad) = |
24 |
save cmi; |
save cmi, cmc; |
25 |
save cur; |
save cur; |
26 |
cmi := 1000; |
cmi := 1000; |
27 |
for i = 0 upto h / rad |
for i = 0 upto h / rad: |
28 |
cur := getcoord( |
cur := getcoord(i*rad, (i+1)*rad); |
29 |
|
% show i,cur; |
30 |
|
if cur < cmi: |
31 |
|
cmi := cur; |
32 |
|
cmc := i * rad; |
33 |
|
fi |
34 |
endfor; |
endfor; |
35 |
|
draw ucircle scaled rad shifted (cmi,cmc); |
36 |
enddef; |
enddef; |
37 |
|
|
38 |
for i = 1 upto 100: |
for i = 1 upto 100: |
39 |
draw fullcircle scaled (mrad/((i**1.01)**.5)) shifted (.02*mrad*i,100); |
% draw fullcircle scaled (mrad/((i**1.01)**.5)) shifted (.02*mrad*i,100); |
40 |
|
addcircle(mrad / ((i**1.01)**.5)); |
41 |
endfor; |
endfor; |
42 |
|
|
43 |
|
picture p; |
44 |
|
p := currentpicture; |
45 |
|
clip p to unitsquare; |
46 |
|
show bbox(p); |
47 |
|
|
48 |
endfig; |
endfig; |
49 |
end |
end |