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