beginfig(1); %color shorthands def r = 0.8*red + 0.2*white enddef; def y = 0.8*yellow + 0.2*white enddef; def b = 0.8*blue + 0.2*white enddef; u:=1cm; %overall scale s:=0.25u; %offset between squares k:=1pt; %thickness of the black lines def hexagon(expr xshift,yshift, cola, colb, colc, cold, cole, colf) = pickup pencircle scaled k; fill (0,0)--% (u,0)--% ((u,0) rotated 60)--% (0,0)--cycle% shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s)) % withcolor cola; fill (0,0)--% ((u,0) rotated 60)--% ((u,0) rotated 120)--% (0,0)--cycle% shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s)) % withcolor colb; fill (0,0)--% ((u,0) rotated 120)--% ((u,0) rotated 180)--% (0,0)--cycle% shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s)) % withcolor colc; fill (0,0)--% ((u,0) rotated 180)--% ((u,0) rotated 240)--% (0,0)--cycle% shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s)) % withcolor cold; fill (0,0)--% ((u,0) rotated 240)--% ((u,0) rotated 300)--% (0,0)--cycle% shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s)) % withcolor cole; fill (0,0)--% ((u,0) rotated 300)--% ((u,0) rotated 360)--% (0,0)--cycle% shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s)) % withcolor colf; pickup pencircle scaled 2k; draw (u,0)--% ((u,0) rotated 60)--% ((u,0) rotated 120)--% ((u,0) rotated 180)--% ((u,0) rotated 240)--% ((u,0) rotated 300)--% (u,0)--cycle % shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s)) % withcolor black; pickup pencircle scaled k; draw (u,0) shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s))--% ((u,0) rotated 180) shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s)) % withcolor black; draw ((u,0) rotated 60) shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s))--% ((u,0) rotated 240) shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s)) % withcolor black; draw ((u,0) rotated 120) shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s))--% ((u,0) rotated 300) shifted (xshift*(1.5u+0.5*sqrt(3)*s),yshift*(sqrt(3)*u+s)+xshift*(0.5*sqrt(3)*u+0.5s)) % withcolor black; enddef; hexagon(0,0,r,r,r,r,r,r); hexagon(0,1,r,r,r,r,r,y); hexagon(0,2,r,r,r,r,y,y); hexagon(0,3,r,r,r,y,r,y); hexagon(0,4,r,r,y,r,r,y); hexagon(0,5,r,r,r,y,y,y); hexagon(0,6,r,r,y,r,y,y); hexagon(0,7,r,r,y,y,r,y); hexagon(0,8,r,y,r,y,r,y); hexagon(0,9,r,r,y,y,y,y); hexagon(0,10,r,y,r,y,y,y); hexagon(0,11,r,y,y,r,y,y); hexagon(0,12,r,y,y,y,y,y); hexagon(1,0,y,y,y,y,y,y); hexagon(1,1,y,y,y,y,y,b); hexagon(1,2,y,y,y,y,b,b); hexagon(1,3,y,y,y,b,y,b); hexagon(1,4,y,y,b,y,y,b); hexagon(1,5,y,y,y,b,b,b); hexagon(1,6,y,y,b,y,b,b); hexagon(1,7,y,y,b,b,y,b); hexagon(1,8,y,b,y,b,y,b); hexagon(1,9,y,y,b,b,b,b); hexagon(1,10,y,b,y,b,b,b); hexagon(1,11,y,b,b,y,b,b); hexagon(1,12,y,b,b,b,b,b); hexagon(2,-1,b,b,b,b,b,b); hexagon(2,0,b,b,b,b,b,r); hexagon(2,1,b,b,b,b,r,r); hexagon(2,2,b,b,b,r,b,r); hexagon(2,3,b,b,r,b,b,r); hexagon(2,4,b,b,b,r,r,r); hexagon(2,5,b,b,r,b,r,r); hexagon(2,6,b,b,r,r,b,r); hexagon(2,7,b,r,b,r,b,r); hexagon(2,8,b,b,r,r,r,r); hexagon(2,9,b,r,b,r,r,r); hexagon(2,10,b,r,r,b,r,r); hexagon(2,11,b,r,r,r,r,r) hexagon(3,-1,r,r,r,r,y,b); hexagon(3,0,r,r,r,r,b,y); hexagon(3,1,r,r,r,b,r,y); hexagon(3,2,r,r,r,y,r,b); hexagon(3,3,r,r,y,r,r,b); hexagon(3,4,y,y,y,y,r,b); hexagon(3,5,y,y,y,y,b,r); hexagon(3,6,y,y,y,r,y,b); hexagon(3,7,y,y,y,b,y,r); hexagon(3,8,y,y,r,y,y,b); hexagon(3,9,b,b,b,b,r,y); hexagon(3,10,b,b,b,b,y,r); hexagon(3,11,b,b,b,r,b,y); hexagon(4,-2,b,b,b,y,b,r); hexagon(4,-1,b,b,y,b,b,r); hexagon(4,0,r,b,r,b,r,y); hexagon(4,1,r,y,r,y,r,b); hexagon(4,2,b,r,b,r,b,y); hexagon(4,3,b,y,b,y,b,r); hexagon(4,4,y,b,y,b,y,r); hexagon(4,5,y,r,y,r,y,b); hexagon(4,6,r,r,b,r,y,b); hexagon(4,7,r,r,y,r,b,y); hexagon(4,8,b,b,r,b,y,r); hexagon(4,9,b,b,y,b,r,y); hexagon(4,10,y,y,r,y,b,r); hexagon(5,-2,y,y,b,y,r,b); hexagon(5,-1,r,r,b,r,b,y); hexagon(5,0,r,r,y,r,y,b); hexagon(5,1,b,b,r,b,r,y); hexagon(5,2,b,b,y,b,y,r); hexagon(5,3,b,b,b,y,r,r); hexagon(5,4,y,y,y,b,r,r); hexagon(5,5,y,y,y,r,b,b); hexagon(5,6,y,y,r,y,r,b); hexagon(5,7,y,y,b,y,b,r); hexagon(5,8,r,r,y,r,b,b); hexagon(5,9,r,r,b,r,y,y); hexagon(5,10,b,b,y,b,r,r); hexagon(6,-3,b,b,r,b,y,y); hexagon(6,-2,y,y,b,y,r,r); hexagon(6,-1,y,y,r,y,b,b); hexagon(6,0,r,r,y,y,r,b); hexagon(6,1,r,r,b,b,r,y); hexagon(6,2,r,r,r,y,b,y); hexagon(6,3,r,r,r,b,y,b); hexagon(6,4,y,y,y,r,b,r); hexagon(6,5,b,b,r,r,b,y); hexagon(6,6,b,b,y,y,b,r); hexagon(6,7,y,y,b,b,y,r); hexagon(6,8,y,y,r,r,y,b); hexagon(6,9,r,r,y,b,r,y); hexagon(7,-3,r,r,b,y,r,b); hexagon(7,-2,b,b,y,r,b,y); hexagon(7,-1,b,b,r,y,b,r); hexagon(7,0,y,y,b,r,y,b); hexagon(7,1,y,y,r,b,y,r); hexagon(7,2,y,y,y,b,r,b); hexagon(7,3,b,b,b,r,y,r); hexagon(7,4,b,b,b,y,r,y); hexagon(7,5,r,r,y,b,r,b); hexagon(7,6,r,r,b,y,r,y); hexagon(7,7,b,b,y,r,b,r); hexagon(7,8,b,b,r,y,b,y); hexagon(7,9,y,y,r,b,y,b); hexagon(8,-4,y,y,b,r,y,r); hexagon(8,-3,r,r,y,y,b,b); hexagon(8,-2,r,r,b,b,y,y); hexagon(8,-1,r,r,y,b,b,y); hexagon(8,0,r,r,b,y,y,b); hexagon(8,1,y,y,r,b,b,r); hexagon(8,2,r,r,y,b,y,b); hexagon(8,3,r,r,b,y,b,y); hexagon(8,4,b,b,y,r,y,r); hexagon(8,5,b,b,r,y,r,y); hexagon(8,6,y,y,b,r,b,r); hexagon(8,7,y,y,r,b,r,b); hexagon(8,8,r,y,b,r,y,b); hexagon(9,-4,r,b,y,r,b,y); hexagon(9,-3,y,b,r,y,r,b); hexagon(9,-2,r,b,y,r,y,b); hexagon(9,-1,b,r,y,b,y,r); hexagon(9,0,r,r,r,b,b,y); hexagon(9,1,r,r,r,y,y,b); hexagon(9,2,b,b,b,r,r,y); hexagon(9,3,b,b,b,y,y,r); hexagon(9,4,y,y,y,r,r,b); hexagon(9,5,y,y,y,b,b,r); hexagon(9,6,r,r,r,b,y,y); hexagon(9,7,r,r,r,y,b,b); hexagon(9,8,b,b,b,r,y,y); endfig;