MetaPost Retour à la page précédente Fichier au format texte pour télécharger Imprimer le document sans le menu !
% 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