% Freely adapted from Escher's drawing 36 % From: Doris Schattschneider % M.C. Escher % Visions of Symmetry % W.H. Freeman and Company % New York % ISBN: 0-7167-2126-0 mpgraph:=1; input mp-tool; prologues:=2; beginfig(1); pickup pencircle scaled 1; pair p[], xshift, yshift, offset; path l[], r[], snake[], drawing, brow[], eye[], black[]; color GREY, WHITE; GREY = 0.8WHITE; WHITE = (1,1,1); width = 279.4mm; height = 215.9mm; s := 0.057; % p1 = (9060,9000-3075); p2 = (4545,9000-3075); p3 = (4545,9000-7612); p4 = (9060,9000-7612); p5 = (6280,9000-4800); p6 = (5760,9000-4725); p7 = (5085,9000-4515); p8 = (4530,9000-3975); p9 = (4140,9000-3405); p10 = (3660,9000-2790); p11 = (3255,9000-2445); p12 = (2715,9000-2235); p13 = (2265,9000-2160); p14 = (1665,9000-2145); p15 = (1185,9000-2115); p16 = (945,9000-2100); p17 = (840,9000-2205); p18 = (840,9000-2310); p19 = (930,9000-2385); p20 = (1080,9000-2535); p21 = (1395,9000-2790); p22 = (1935,9000-3180); p23 = (2460,9000-3735); p24 = (2700,9000-4200); p25 = (2835,9000-4680); p26 = (2775,9000-5085); p27 = (2655,9000-5385); p28 = (2490,9000-5595); p29 = (2295,9000-5715); p30 = (2070,9000-5820); p31 = (1755,9000-5880); %p32 = (4530,9000-7605); p33 = (4200,9000-7920); p34 = (3900,9000-8145); p35 = (3600,9000-8460); p36 = (3405,9000-8820); p37 = (3345,9000-9195); p38 = (3405,9000-9435); p39 = (3525,9000-9660); p40 = (3780,9000-9810); p41 = (4125,9000-9915); p42 = (4590,9000-9870); p43 = (5265,9000-9720); p44 = (5700,9000-9615); p45 = (6330,9000-9450); p46 = (6825,9000-9360); %p47 = (7320,9000-9300); p48 = (7320,9000-9300); p49 = (7680,9000-9195); p50 = (8070,9000-9015); p51 = (8325,9000-8835); p52 = (8520,9000-8610); p53 = (8715,9000-8340); p54 = (8865,9000-8025); p55 = (9000,9000-7800); p56 = (9045,9000-7605); p57 = p31 rotatedabout (p3,180); p58 = p57 rotatedabout (p4,180); p59 = p5 rotatedabout (p1,180); p60 = (1575,9000-2580); p61 = (1725,9000-2300); p62 = (2175,9000-2300); p63 = (2605,9000-2750); l1 = p1--p2--p3--p4--cycle; l2 = p5..p6..p7..p8..p9.. p10..p11..p12..p13..p14.. p15..p16..p17..p18..p19.. p20..p21..p22..p23..p24.. p25..p26..p27..p28..p29.. p30..p31; r2 = ((l2 shifted (-p31)) yscaled (-1)) shifted p5; l3 = p3.. p33..p34..p35..p36..p37..p38..p39.. p40..p41..p42..p43..p44..p45..p46.. p57; r3 = (p57.. p46..p45..p44..p43..p42..p41..p40.. p39..p38..p37..p36..p35..p34..p33.. p3) rotatedabout (p3,180); l4 = p57.. p49..p50..p51..p52..p53..p54..p55.. % p56 p4; r4 = ((p55..p54..p53..p52..p51..p50..p49.. % p47 p57) rotatedabout (p4,180))..p58; xshift = s*(p58-p31); yshift = 2s*(p1-p4); brow1 := p60..p61..p62..p63; eye1 := (0.2[p60,p63]--0.2[p60,p63]+(0,infinity)) intersectionpoint brow1.. 0.5[p60,p63].. (0.6[p60,p63]--0.6[p60,p63]+(0,infinity)) intersectionpoint brow1; black1 := (0.3[p60,p63]-(0,infinity)--0.3[p60,p63]+(0,infinity)) intersectionpoint eye1.. (0.4[p60,p63]-(0,infinity)--0.4[p60,p63]+(0,infinity)) intersectionpoint eye1.. (0.5[p60,p63]-(0,infinity)--0.5[p60,p63]+(0,infinity)) intersectionpoint eye1-- ((0.5[p60,p63]-(0,infinity)--0.5[p60,p63]+(0,infinity)) intersectionpoint eye1){dir 60}.. {dir 120}(0.5[p60,p63]-(0,infinity)--0.5[p60,p63]+(0,infinity)) intersectionpoint brow1-- (0.5[p60,p63]-(0,infinity)--0.5[p60,p63]+(0,infinity)) intersectionpoint brow1.. (0.4[p60,p63]-(0,infinity)--0.4[p60,p63]+(0,infinity)) intersectionpoint brow1.. (0.3[p60,p63]-(0,infinity)--0.3[p60,p63]+(0,infinity)) intersectionpoint brow1-- (0.3[p60,p63]-(0,infinity)--0.3[p60,p63]+(0,infinity)) intersectionpoint brow1{dir 240}..{dir 300}cycle; snake1 := ((l2--r3--l3--l4--r4--r2--cycle) shifted -p31) scaled s; brow1 := (brow1 shifted -p31) scaled s; eye1 := (eye1 shifted -p31) scaled s; black1 := (black1 shifted -p31) scaled s; snake2 := snake1 yscaled -1 shifted (s*(p5-p31)); eye2 := eye1 yscaled -1 shifted (s*(p5-p31)); brow2 := brow1 yscaled -1 shifted (s*(p5-p31)); black2 := black1 yscaled -1 shifted (s*(p5-p31)); snake3 := snake1 xscaled -1 shifted (s*(p59-p31)); eye3 := eye1 xscaled -1 shifted (s*(p59-p31)); brow3 := brow1 xscaled -1 shifted (s*(p59-p31)); black3 := black1 xscaled -1 shifted (s*(p59-p31)); snake4 := snake2 xscaled -1 shifted (s*(p59-p31)); eye4 := eye2 xscaled -1 shifted (s*(p59-p31)); brow4 := brow2 xscaled -1 shifted (s*(p59-p31)); black4 := black2 xscaled -1 shifted (s*(p59-p31)); pickup pencircle scaled 2pt; for x=-1 upto 2: for y=-1 upto 1: offset := x * xshift + y * yshift + s*(650mm,250mm); fill snake2 shifted offset withcolor WHITE; fill snake1 shifted offset withcolor GREY; fill snake4 shifted offset withcolor WHITE; fill snake3 shifted offset withcolor GREY; draw brow1 shifted offset withcolor 0.85GREY; draw eye1 shifted offset withcolor 0.85GREY; fill black1 shifted offset withcolor 0.85GREY; draw brow3 shifted offset withcolor 0.85GREY; draw eye3 shifted offset withcolor 0.85GREY; fill black3 shifted offset withcolor 0.85GREY; draw brow2 shifted offset withcolor 0.90GREY; draw eye2 shifted offset withcolor 0.90GREY; fill black2 shifted offset withcolor 0.90GREY; draw brow4 shifted offset withcolor 0.90GREY; draw eye4 shifted offset withcolor 0.90GREY; fill black4 shifted offset withcolor 0.90GREY; endfor; 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