\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
def width(expr P) = xpart (urcorner P - llcorner P) enddef;
picture s[];
path p; p = origin -- 16 right;
s1 = image(undraw (origin -- up) scaled 21; draw p;
for t=0, 1:
draw point t of p withpen pencircle scaled 3/2 withcolor 0.74 red;
endfor
);
for i=2 upto 5:
s[i] = image(
p := p rotated 45;
p := p & reverse p rotatedabout(point length p of p, 90);
draw p;
for t=0, 1/2 length p, length p:
draw point t of p withpen pencircle scaled 3/2 withcolor 0.74 red;
endfor
) shifted (0 for j=i-1 downto 1: + width(s[j]) + 30 endfor, 0);
endfor
beginfig(1);
draw s1; draw s2; draw s3; draw s4; draw s5;
ahangle := 30;
drawoptions(withcolor (.2,.2,.7));
for i=1 upto 4:
drawarrow (origin -- 14 right) shifted (xpart lrcorner s[i] + 6, 4);
endfor
drawoptions();
endfig;
\end{mplibcode}
\end{document}