% Freely adapted from Escher's drawing 74
% From: Doris Schattschneider
% M.C. Escher
% Visions of Symmetry
% W.H. Freeman and Company
% New York
% ISBN: 0-7167-2126-0
input mp-tool;
beginfig(1);
pickup pencircle scaled 1;
pair p[], xshift, yshift, origin, offset;
path line[], bird, drawing;
color WHITE, GREY, C[];
WHITE = (1,1,1);
GREY = 0.82WHITE;
width = 279.4mm;
height = 215.9mm;
s = 0.059;
origin = (15cm,0cm);
xshift = (2*(p1 - p24) + (p24 - p13) + (p1 - p24) - (p13 - p24))scaled s;
yshift = (p13 - p1) scaled s;
C[1] = WHITE;
C[2] = GREY;
p1 = (7095,9000-4425);
p2 = (5295,9000-4170);
p3 = (3930,9000-4575);
p4 = (3645,9000-5850);
p5 = (3570,9000-6290);
p6 = (3465,9000-6930);
p7 = (3390,9000-7320);
p8 = (3255,9000-7695);
p9 = (3045,9000-7785);
p10 = (3480,9000-5640);
p11 = (3330,9000-4875);
p12 = (3405,9000-4005);
p13 = (3855,9000-2985);
p14 = (2340,9000-4395);
p15 = (1590,9000-5880);
p16 = (1425,9000-6225);
p17 = (900,9000-6640);
p18 = (405,9000-6755);
p19 = (135,9000-6620);
p20 = (2505,9000-6435);
p21 = (3135,9000-7395);
p22 = (2565,9000-7650);
p23 = (1860,9000-7530);
p24 = (1125,9000-7170);
line1 = (p1..p2..p3) shifted -p1;
line2 = (p3..0.5[p3,p4]-(100,0)..p4) shifted -p1;
line3 = (p4..p10..p11..p12..p13) shifted -p1;
line4 = (p13..p14..p15) shifted -p1;
line5 = (p15..p20..p21) shifted -p1;
line6 = (p21..p22..p23..p24) shifted -p1;
line7 = (p3..p2..p1) shifted -p1;
line8 = (p4..0.5[p3,p4]-(80,0)..p3) shifted -p1;
line9 = (p13..p12..p11..p10..p4) shifted -p1;
line10 = (p15..p14..p13) shifted -p1;
line11 = (p21..p20..p15) shifted -p1;
line12 = (p24..p23..p22..p21) shifted -p1;
bird = line1--line2--line3--line4--line5--line6--
line9 shifted (p24 - p13)--
line8 shifted (p24 - p13)--
line7 shifted (p24 - p13)--
line12 shifted (p1 - p13)--
line11 shifted (p1 - p13)--
line10 shifted (p1 - p13)--
cycle;
line13 = (p15..p16..p17..p18..p19) shifted -p13;
line14 = (p4{dir 280}...p5...p6...p7...p8...p9) shifted -p1;
% eye
p25 = (1095,9000-7875);
% p26 = (1290,9000-7890);
p27 = (795,9000-8190);
p28 = (1030,9000-8370);
p29 = (1430,9000-8325);
line15 = (p27..p28..p29) shifted -p1;
line16 = (p29..0.5[p29,p3+p24-p13]-(10,0)..p3+p24-p13) shifted -p1;
p30 = (3255,9000-4110);
p31 = (2700,9000-4620);
p32 = (2310,9000-5205);
line17 = (p30..p31..p32) shifted -p1;
p33 = (3210,9000-4965);
p34 = (2865,9000-5280);
p35 = (2640,9000-5640);
line18 = (p33..p34..p35) shifted -p1;
p36 = (3405,9000-5715);
p37 = (3135,9000-5880);
p38 = (2880,9000-6090);
line19 = (p36..p37..p38) shifted -p1;
p39 = (3315,9000-6405);
p40 = (3150,9000-6450);
line20 = (p5..p39..p40) shifted -p1;
p41 = (3390,9000-6945);
p42 = (3345,9000-6960);
line21 = (p6..p41..p42) shifted -p1;
line22 = (p21..0.5[p21,p7]+(0,16)..p7) shifted -p1;
p43 = (6180,9000-4800);
p44 = (5415,9000-4650);
p45 = (4650,9000-4770);
line23 = (p43..p44..p45) shifted -p1;
p46 = (5625,9000-5430);
p47 = (5040,9000-5220);
p48 = (4485,9000-5235);
line24 = (p46..p47..p48) shifted -p1;
p49 = (5145,9000-6075);
p50 = (4605,9000-5860);
p51 = (4260,9000-5845);
line25 = (p49..p50..p51) shifted -p1;
p52 = (4845,9000-6720);
p53 = (4425,9000-6525);
p54 = (4020,9000-6465);
line26 = (p52..p53..p54) shifted -p1;
p55 = (4485,9000-7250);
p56 = (4200,9000-7050);
p57 = (3915,9000-7000);
line27 = (p55..p56..p57) shifted -p1;
p58 = (4050,9000-7750);
p59 = (3885,9000-7625);
p60 = (3645,9000-7560);
line28 = (p58..p59..p60) shifted -p1;
line29 = ((125,0)..(0,125)..(-125,0)..(0,-125)..(125,0)--cycle) shifted (p25-p1);
line30 = ((60,0)..(0,60)..(-60,0)..(0,-60)..(60,0)--cycle) shifted (p25-p1);
lines = 17;
c := 2;
xmin = 0;
xmax = 3;
ymin = 0;
ymax = 10;
for y=ymin upto ymax:
for x=xmin upto xmax:
offset := origin + x*xshift + y*yshift;
if (xpart(offset) <= width + 6000*s) and
(0 <= xpart(offset)) and
(ypart(offset) <= height + 6000*s) and
(0 <= ypart(offset)):
pickup pencircle scaled 2pt;
fill bird scaled s shifted offset withcolor C[c];
for i = 13 upto 28:
draw line[i] scaled s shifted offset withcolor C[3-c];
endfor;
pickup pencircle scaled 1.5pt;
draw line29 scaled s shifted offset withcolor C[3-c];
fill line30 scaled s shifted offset withcolor C[3-c];
fi;
endfor;
c := 3 - c;
endfor;
%
pickup pencircle scaled 1;
draw(0,0)--(width,0)--(width,height)--(0,height)--cycle withcolor (0,0,0);
drawing = unitsquare xscaled width yscaled height;
clip currentpicture to drawing;
draw drawing;
endfig;
end
|