\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
beginfig(1);
numeric s; s = 8;
path atom;
atom = origin
-- (2s,0) rotated -30 -- (2s,0) rotated -30 + (0,s)
-- ( s,0) rotated 30 -- ( s,0) rotated 30 + (0,s)
-- (0,2s) -- cycle;
picture p[];
for i=0 upto 2:
p[i] = image(
fill atom rotated -120i withcolor (7/8 - 1/8i) ;
draw atom rotated -120i;
);
endfor
pair u, v;
u = point 3 of atom - point 1 of atom rotated -120;
v = u rotated 60;
n = 13;
for i=-n upto n:
for j=-n upto n:
forsuffixes $=0,1,2:
draw p$ shifted (i*u + j*v);
endfor
endfor
endfor
clip currentpicture to
unitsquare shifted -(1/2,1/2) scaled 5in yscaled 0.618;
endfig;
\end{mplibcode}
\end{document}