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 128 
% 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; 
 C[1] = WHITE; 
 C[2] = GREY; 
 width = 279.4mm; 
 height = 215.9mm; 
 s = 0.95cm; 
 z1 = (0,0); 
 z2 = (8,0); 
 z3 = (8,8); 
 z4 = (0,8); 
 z5 = (1,-1); 
 z6 = (2,-4); 
 z7 = (2,-6.5); 
 line1 = z1..z5..z6..z7; 
 z8 = (4,-6); 
 z9 = (5,-6.5); 
 line2 = z7..z8..z9; 
 z10 = (4.95,-6); 
 z11 = (3.5,-5); 
 line3 = z9..z10..z11; 
 z12 = (3,-3.5); 
 z13 = (4,-2); 
 z14 = (6,-1.5); 
 z15 = (7,-1); 
 line4 = z11..z12..z13..z14..z15..{dir 70}z2; 
 z16 = (8,2); 
 z17 = (6,3.75); 
 z18 = (5,4.0); 
 z19 = (6,4.5); 
 z20 = (7,5.5); 
 line5 = z2{dir 70}..z16..z17..controls z18 and z18..z19..z20..z3; 
 line6 = reverse line4 shifted (z3-z2); 
 line7 = reverse line3 shifted (z3-z2); 
 line8 = reverse line2 shifted (z3-z2); 
 line9 = reverse line1 shifted (z3-z2); 
 line10 = reverse line5 shifted (z4-z3); 
 bird = line1--line2--line3--line4--line5-- 
 line6--line7--line8--line9--line10--cycle; 
 z21 = (4,-6); 
 z22 = (3.5,-5.3); 
 z23 = (2.8,-5.1); 
 line11 = z21..z22..z23; 
 z24 = 0.5[z6,z12]; 
 z25 = (3,-1.5); 
 line12 = z23..z24..z25; 
 line13 = (z5..z13-(0,0.02)..z14-(0,0.02)..z15-(0,0.02)) cutbefore line12 cutafter line4; 
 z26 = (3,-1); 
 z27 = (5,-1); 
 z28 = (6,-0.5); 
 z29 = (6.5,0); 
 z30 = (6,1); 
 z31 = (5.3,0.7); 
 line14 = z1..z26..z27..z28..z29..z30..z31; 
 z32 = (3,1); 
 z33 = (4,0.5); 
 z34 = (5,0); 
 line15 = z1{dir 350}..{dir 30}z32; 
 line16 = (point 0.5 of line14){dir 0}..{dir 50}z33; 
 line17 = z26{dir 0}..{dir 30}z34; 
 z35 = (0.5,0.9); 
 z36 = (0,3.5); 
 z37 = (-1.5,4.5); 
 line18 = z35..z36..z37; 
 z38 = (1,0.9); 
 z39 = (1,3); 
 z40 = (0,5); 
 z41 = (-0.5,5.4); 
 line19 = z38..z39..z40..z41; 
 z42 = (1.5,1.8); 
 z43 = (1,5); 
 z44 = (0,6.5); 
 line20 = z42..z43..z44; 
 line21 = (z1..z38..line2 shifted (z3-z2+(0,0.02))) cutafter 
 (line1 shifted (z3-z2)); 
 z45 = (6,5); 
 z46 = (5.5,6); 
 line22 = z45{dir 90}..z46; 
 z47 = (7,6.25); 
 z48 = (5,5.5); 
 line23 = (z3..z47..(point 0.5 of line22)..z48) cutafter line22; 
 z49 = (4,4.5); 
 z50 = (4,5); 
 z51 = (5,5.5); 
 z52 = (5.4,5.6); 
 line24 = z49--z50..{dir 0}z51..z52; 
 z53 = (5,5); 
 line25 = z50..z53..z51; 
 lines = 15; 
 xmin = 0; 
 xmax = 4; 
 ymin = 0; 
 ymax = 4; 
 origin := (-1cm,-1cm); 
 xshift = s*(z2-z1); 
 yshift = s*(z4-z1); 
 pickup pencircle scaled 3pt; 
 c := 1; 
 for y = ymin upto ymax: 
 c := 1 + (y mod 2); 
 for x = xmin upto xmax: 
 offset := origin + x*xshift + y*yshift; 
 fill bird scaled s shifted offset withcolor C[c]; 
 draw bird scaled s shifted offset withcolor GREY; 
 for i = 11 upto 10+lines: 
 draw line[i] scaled s shifted offset withcolor C[3-c]; 
 endfor; 
 c := 1 + (c mod 2); 
 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