\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}