% Freely adapted from Escher's drawing 20
% 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[], fish, area[], drawing;
color GREEN, WHITE, GREY, RED, BLUE, C[];
WHITE = (1,1,1);
GREEN = 0.88WHITE;
RED = 0.82WHITE;
BLUE = 0.94WHITE;
GREY = 0.8WHITE;
C[1] = BLUE;
C[2] = WHITE;
C[3] = RED;
C[4] = GREEN;
width = 279.4mm;
height = 215.9mm;
s = 0.044;
p1 = (4800,-1200);
p2 = (600,-5400);
p3 = (4800,-9600);
p4 = (9000,-5400);
p5 = (6525,-11325);
p6 = (6825,-10350);
p7 = (7275,-9600);
p8 = (7650,-8925);
p9 = (8025,-7950);
p10 = (8025,-7200);
p11 = (7950,-6450);
line1 = p1--p2--p3--p4--cycle;
line2 = p5..p6..p7..p8..p9..p10..p11;
p12 = (8475,-6075);
line3 = p11..p12..p4;
line4 = reverse line3 rotatedabout (p4,270);
p18 = (2250,-3050);
p19 = (350,-3150);
p20 = (0,-3450);
line5 = reverse line2 rotatedabout (p4,270);
line6 = p5 rotatedabout (p4,270)..p18..p19..p20..p20-(900,120);
p21 = (150,-4325);
line7 = p20-(900,120)..p21..p2;
p22 = (5700,-10950);
p23 = (5325,-10575);
p24 = (5025,-10050);
line8 = p3..p24..p23..p22..p5;
line9 = (reverse line7) rotatedabout (p2,270);
line10 = (reverse line6) rotatedabout (p2,270);
line11 = reverse (line5 cutbefore (p1--p2)) rotatedabout (p2,270);
line12 = (reverse line8) rotatedabout (p3,180);
fish = line8--line2--line3--line4--line5--line6--line7--
line9--line10--line11--line12--cycle;
p26 = (1875,-3100);
p27 = (1500,-3375);
p28 = (1425,-3750);
line13 = p5 rotatedabout (p4,270)..p18..p26..p27..p28;
p29 = (1875,-3900);
p30 = (2475,-3825);
p31 = (3150,-3600);
p32 = (3825,-3525);
p33 = (4650,-3525);
line14 = (p28..p29..p30..p31..p32..{dir 20}p33) cutafter line5;
p34 = (7575,-4830);
p35 = (6795,-5010);
p36 = (6060,-4830);
p37 = (5535,-4575);
p38 = (4965,-4140);
p39 = (4455,-3840);
p40 = (3390,-3480);
line15 = (p11 rotatedabout (p4,270)..p34..p35..p36..p37..p38..p39..p40) cutafter line14;
p41 = (7425,-5700);
p42 = (6465,-4935);
line16 = (p11..p41..p42) cutafter line14;
p43 = (4440,-8900);
p44 = (4230,-8360);
p45 = (4065,-7540);
p46 = (3975,-6835);
p47 = (3885,-6295);
p48 = (3675,-5590);
p49 = (3360,-4690);
p50 = (2060,-3700);
line17 = (p3..p43..p44..p45..p46..p47..p48..p49..p50) cutafter line14;
p51 = (4710,-9300);
p52 = (4740,-8985);
p53 = (5025,-8655);
p54 = (5370,-8445);
p55 = (5640,-8310);
p56 = (6060,-8190);
p57 = (6450,-8115);
p58 = (7215,-8205);
p59 = (7545,-8580);
p60 = (7620,-8880);
p61 = (7605,-9420);
line18 = (p51..p52..p53..p54..p55..p56..p57..p58..p59..p60..p61)
cutafter line2;
p62 = (5085,-9315);
p63 = (5025,-9630);
p64 = (5160,-9900);
p65 = (5445,-10125);
p66 = (5820,-10305);
p67 = (6120,-10500);
p68 = (6375,-10770);
p69 = (6465,-10965);
p70 = (6595,-11280);
line19 = (p62..p63..p64..p65..p66..p67..p68..p69..p70)
cutafter line2;
p71 = (6390,-9060);
p72 = (6510,-8970);
p73 = (6765,-8985);
p74 = (7110,-9285);
p75 = (7230,-9615);
p76 = (7260,-10170);
line20 = (p71..p72..p73..p74..p75..p76) cutafter line2;
p77 = (5100,-8130);
p78 = (4890,-7770);
p79 = (4785,-7410);
p80 = (4800,-7290);
p81 = (4845,-7125);
p82 = (4950,-6885);
p83 = (5205,-6615);
p84 = (5385,-6480);
p85 = (5475,-6435);
p86 = (5550,-6450);
p87 = (5625,-6540);
p88 = (5730,-6975);
p89 = (5760,-7410);
p90 = (5715,-7890);
line21 = p54..p77..p78..p79..
p80..p81..p82..p83..p84..p85..p86..p87..p88..p89..
p90..p55;
ra = 100s;
rb = 180s;
p91 = (6825,-9855);
line22 = ((1,0)..(0,1)..(-1,0)..(0,-1)..(1,0)--cycle) scaled ra;
line23 = ((1,0)..(0,1)..(-1,0)..(0,-1)..(1,0)--cycle) scaled rb;
lines = 9;
xmin = 0;
xmax = 1;
ymin = 0;
ymax = 3;
origin := (6.3cm,-0.1cm);
xshift = 2s*(p4-p2);
yshift = 2s*(p1-p4);
pickup pencircle scaled 2pt;
for x = xmin upto xmax:
for y = ymin upto ymax:
if (-3 <x - y) and (x - y <1):
offset := origin + x*xshift + y*yshift;
for i = 0 upto 3:
fill (fish rotatedabout (p4,90i)) scaled s shifted offset
withcolor C[i+1];
for j=1 upto lines:
draw (line[12+j] rotatedabout (p4,90i)) scaled s shifted offset
withcolor 0.9C[i+1];
endfor;
draw line23 shifted ((s*(p91 rotatedabout (p4,90i))) + offset)
withcolor 0.9C[i+1];
fill line22 shifted ((s*(p91 rotatedabout (p4,90i))) + offset)
withcolor 0.9C[i+1];
draw (fish rotatedabout (p4,90i)) scaled s shifted offset
withcolor GREY;
endfor;
fi;
endfor;
endfor;
% draw line1 scaled 0.05;
pickup pencircle scaled 1;
draw(0,0)--(width,0)--(width,height)--(0,height)--cycle withcolor WHITE;
drawing = unitsquare xscaled width yscaled height;
clip currentpicture to drawing;
draw drawing;
endfig;
end
|