\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\usepackage{dwmpcode}
\def\t#1{\vbox{\let\\\cr\halign{\texttt{##}\hss\cr#1\cr}}}
\def\ts#1{\vbox{\let\\\cr\openup-4pt\halign{\small\hss\mpl{##}\hss\cr#1\cr}}}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
numeric u; u = 16;
pen P[];
P1 = makepen(for i=1 upto 90: 1/2 dir 4i -- endfor cycle) scaled u;
P10 = pencircle scaled u;
P100 = pencircle scaled 1/2;
P2 = pensquare scaled u;
P20 = pensquare scaled u;
P200 = pensquare;
P3 = pensquare scaled 0.7071 u rotated 45;
P30 = pensquare scaled 0.7071 u rotated 45;
P300 = pensquare scaled 0.35355 rotated 45;
P4 = penrazor scaled u;
P40 = penrazor scaled u;
P400 = penrazor;
path crook; crook = origin -- (5u, 0) -- 7u * dir 30;
string cap_name[], join_name[], pen_name[];
cap_name[butt] = "butt";
cap_name[rounded] = "rounded";
cap_name[squared] = "squared";
join_name[beveled] = "beveled";
join_name[rounded] = "rounded";
join_name[mitered] = "mitered";
pen_name1 = "pencircle";
pen_name2 = "pensquare";
pen_name3 = "pensquare\\\quad rotated 45";
pen_name4 = "penrazor";
for i=1, 2:
draw (origin -- 360 right) shifted ((0, 2.25-2.8i) scaled 8u);
label.rt("\t{" & pen_name[i] & "}", (0, 2.15-2.8i) scaled 8u);
for cap = rounded, butt, squared:
interim linecap := cap;
for join = rounded, beveled, mitered:
boolean default; default = (cap=rounded) and (join=rounded);
interim linejoin := join;
pair s; s = (cap, 0.8 join) shifted (0, -2.8i) scaled 8u;
draw crook shifted s withpen P[i]
withcolor
(15/16 if default: - 1/8 fi)
if i=1: [blue, white] fi;
draw (2.5u, 3u) shifted s withpen P[10i] withcolor 3/4;
draw fullcircle scaled 20 shifted (2.5u, 3u) shifted s withcolor 3/4 red;
for k=0, 1, 2:
draw makepath(P[i]) shifted point k of crook shifted s withcolor 1/2[blue, white];
endfor
draw envelope P[i] of crook shifted s;
draw crook shifted s withpen P[100i] withcolor red;
if default:
label("\ts{linecap\\" & cap_name[cap] & "}", s + (0, 5/4u));
label("\ts{" & join_name[join] & "\\linejoin}", point 1 of crook shifted s shifted (0, -5/4u));
else:
label("\ts{" & cap_name[cap] & "}", s + (0, u));
label("\ts{" & join_name[join] & "}", point 1 of crook shifted s shifted (0, -u));
fi
endfor
endfor
endfor
endfig;
\end{mplibcode}
\end{document}