\documentclass[border=0mm]{standalone} \usepackage{luamplib} \begin{document} \mplibtextextlabel{enable} \begin{mplibcode} path o; o = for i=0 upto 7: 8 right rotated (45/2 + 45i) -- endfor cycle; numeric a, b; a = abs(point 1/2 of o - point 9/2 of o); b = abs(point 0 of o - point 1 of o); o := o shifted 1/2(2a + b, a); path s, t, x; s = unitsquare zscaled (point 4 of o - point 5 of o) shifted point 5 of o; t = unitsquare zscaled (point 6 of o - point 7 of o) shifted point 7 of o; x = unitsquare zscaled (point 7 of o - point 8 of o) shifted point 8 of o; input colorbrewer-rgb picture unit; unit = image( for i=0 upto 7: fill o rotated 45i withcolor Oranges 8 3; draw o rotated 45i; fill s rotated 45i withcolor Blues 8 2; draw s rotated 45i; endfor for i = 0, 1, 2, 3, 5, 7: fill t rotated 45i withcolor Blues 8 4; draw t rotated 45i; endfor for i = 1, 3, 5, 7: fill x rotated 45i withcolor Blues 8 4; draw x rotated 45i; endfor ); beginfig(1); pair u, v; u = 2 center t; v = u rotated 90; n = 4; for i=-n upto n: for j = -n upto n: draw unit shifted (i * u + j * v); endfor endfor clip currentpicture to unitsquare shifted -(1/2, 1/2) yscaled sqrt(2) scaled 105mm; endfig; \end{mplibcode} \end{document}