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
57
58
59
|
% twoplustwo.mp
% L. Nobre G.
% 2006
def screenpath( expr CentrePoi, Width, Height, CorneRay ) =
begingroup
pair sp[];
sp0 = CentrePoi - 0.5*( Width*right + Height*up ) + CorneRay*down;
sp1 = CentrePoi + 0.5*( Width*right - Height*up ) + CorneRay*down;
sp2 = CentrePoi + 0.5*( Width*right - Height*up ) + CorneRay*right;
sp3 = CentrePoi + 0.5*( Width*right + Height*up ) + CorneRay*right;
sp4 = CentrePoi + 0.5*( Width*right + Height*up ) + CorneRay*up;
sp5 = CentrePoi - 0.5*( Width*right - Height*up ) + CorneRay*up;
sp6 = CentrePoi - 0.5*( Width*right - Height*up ) + CorneRay*left;
sp7 = CentrePoi - 0.5*( Width*right + Height*up ) + CorneRay*left;
( sp0---sp1..sp2---sp3..sp4---sp5..sp6---sp7..cycle )
endgroup
enddef;
beginfig(1);
numeric u, i, j, k, l;
pen stdpen;
color bgcol, fgcol;
bgcol = 0.7white;
fgcol = 0.85*(blue+green);
stdpen = pencircle scaled 9pt;
u = 5cm;
for i=1 upto 5:
j := 90-72+i*72;
k := i+5;
l := k+5;
z[i] = u*dir(j);
z[k] = u*sind(18)*dir(j);
z[l] = u*sind(18)*dir(j+36)/cosd(36);
endfor;
path inip, inis, init, iniq, scrbord;
scrbord = screenpath( origin, 1.7u, 1.1u, 0.7u );
inip = z5---z2--z12{unitvector(z8-z2)}..{unitvector(z5-z9)}z14--cycle;
% inis = ( inip ) rotated 72;
% init = ( ( ( inip ) shifted -z5 ) yscaled -1 ) shifted z4;
% iniq = ( ( ( ( inip ) shifted -z2 ) yscaled -1 ) rotated 72 ) shifted z4;
% draw inip withpen pencircle scaled 3pt;
% draw inis;
% draw init;
% draw iniq;
fill inip withcolor fgcol;
draw inip withpen stdpen withcolor bgcol;
picture unitpic;
unitpic = currentpicture;
currentpicture := nullpicture;
fill scrbord withcolor bgcol;
draw ( ( ( ( unitpic ) shifted -z2 ) yscaled -1 ) rotated 72 ) shifted z4;
draw unitpic;
draw ( ( ( unitpic ) shifted -z5 ) yscaled -1 ) shifted z4;
draw ( unitpic ) rotated 72;
endfig;
end;
|