\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
 pair A, B, C, D, N, M, p, q, r;
 A = origin; B = 343 dir 10; C = 212 dir 70;
 % pedal points (not labelled)
 p = whatever[B, C]; A - p = whatever * (B-C) rotated 90;
 q = whatever[C, A]; B - q = whatever * (C-A) rotated 90;
 r = whatever[A, B]; C - r = whatever * (A-B) rotated 90;

 D = whatever[A, p] = whatever[B, q];
 N = 1/4(A + B + C + D);  % remarkably...
 M = D rotatedabout(N, 180);  % M is also the circumcentre

 path circumcircle, nine_point_circle;
 nine_point_circle = fullcircle scaled 2 abs(N - 1/2[A, B]) shifted N;
 circumcircle = fullcircle scaled 2 abs(M - A) shifted M;

 draw nine_point_circle withcolor 3/4 red;
 draw circumcircle withcolor 1/2[3/4 blue, white];

 drawoptions(dashed evenly scaled 1/4 withcolor 1/2);
 draw 1/2[A,B] -- M -- 1/2[B, C];
 draw 1/2[C,A] -- M -- D;
 draw A -- p;
 draw B -- q;
 draw C -- r;

 % mark the nine points with small circles
 drawoptions(withpen pencircle scaled 1/4);
 draw fullcircle scaled 2 shifted 1/2[A, B];
 draw fullcircle scaled 2 shifted 1/2[A, C];
 draw fullcircle scaled 2 shifted 1/2[A, D];
 draw fullcircle scaled 2 shifted 1/2[B, C];
 draw fullcircle scaled 2 shifted 1/2[B, D];
 draw fullcircle scaled 2 shifted 1/2[C, D];
 draw fullcircle scaled 2 shifted p;
 draw fullcircle scaled 2 shifted q;
 draw fullcircle scaled 2 shifted r;

 drawoptions();
 draw A--B--C--cycle;
 dotlabel.llft("$A$", A);
 dotlabel.rt("$B$", B);
 dotlabel.ulft("$C$", C);
 dotlabel.urt("\ $D$", D);
 dotlabel.llft("$M$", M);
 dotlabel.llft("$N$", N);
endfig;
\end{mplibcode}
\end{document}