\documentclass[border=0mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
color TR, TB, TG;
TB = (.2,.2,.7);
TR = (0.54,0,0);
TG = (0, 0.44, 0);

path xx, yy;
xx = (left--right) scaled 144;
yy = (down--up) scaled 89;

ahangle := 30;
picture P[];
P0 = image(drawarrow xx withcolor 1/2; drawarrow yy withcolor 1/2);
P1 = image(draw P0;
   path c, a;
   c = fullcircle scaled 4cm shifted (34, 21);
   a = point 1 of c -- center c;
   draw c withcolor TR;
   draw fullcircle scaled 3 shifted (34,21); label.lrt("$(34,21)$", (34,21));
   drawdblarrow a; label.ulft("2 cm", point 1/2 of a);
);

vardef circle_through(expr A, B, C) =
   save o; pair o;
   o = whatever * (A-B) rotated 90 shifted 1/2[A,B]
     = whatever * (B-C) rotated 90 shifted 1/2[B,C];
   fullcircle scaled 2 abs (A-o) shifted o
enddef;

P2 = image(draw P0;
   pair A, B, C;
   A = (-21, -13);
   B = (58, 21);
   C = (89, -34);

   path c[];
   c1 = fullcircle scaled 2 abs(A-B) shifted A;
   c2 = fullcircle scaled   abs(A-B) shifted 1/2[A, B];
   c3 = circle_through(A, B, C);

   draw c1 withcolor TR; label.ulft("I", point 3 of c1) withcolor TR;

   draw A -- B dashed withdots scaled 1/4 withpen pencircle scaled 1/4 withcolor TB;
   draw c2 withcolor TB; label.ulft("II", point 3 of c2) withcolor TB;
   draw fullcircle scaled 2 shifted 1/2[A, B] withcolor TB;

   draw c3 withcolor TG; label.urt("III", point 1 of c3) withcolor TG;

   dotlabel.llft("$A$", A);
   dotlabel.urt("$B$", B);
   dotlabel.lrt("$C$", C);
);

beginfig(1);
labeloffset := 10;
label.top(P1, origin);
label.bot(P2, origin);
endfig;
\end{mplibcode}
\end{document}