\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
input eggs-common
beginfig(1);

path base, aa, bb; pair m, n, n';
base = fullcircle scaled 200; m = 1/2 point 0 of base;
aa = halfcircle scaled 2 abs (point 2 of base - m) 
                shifted m cutbefore (origin -- 1000 up);
n = point infinity of aa; n' = n reflectedabout(up, down);
bb = subpath (0, 2) of base shifted n cutafter (origin -- 1000 up);
path dome, cap, cup, egg;
dome = fullcircle 
    scaled 2 (abs(n - point 0 of base) - abs(n - point 0 of bb))
    shifted point length bb of bb;
cap = dome
    cutbefore (point 4 of bb -- 2[n, point 4 of bb])
    cutafter  (point 4 of bb -- 2[n', point 4 of bb]);
cup = subpath (4, 8) of base;
egg = point 4 of cup {up} .. cap .. {down} cup & cycle;

fill egg withpen pencircle scaled 2 withcolor eggshell;
picture P; P = currentpicture;
drawoptions(withpen pencircle scaled 1/4 withcolor dark_eggshell);
draw m -- aa; 
draw bb; 
draw origin -- point 2 of base;
draw base; draw dome;
label.bot("$m$", m);
label.ulft("$n$", n);
label.urt("$n'$", n');

drawoptions(withpen pencircle scaled 1/4 withcolor 1/2);
draw n -- point 1 of egg;
draw n' -- point 3 of egg;
draw point 0 of egg -- point 4 of egg;
draw egg;

forsuffixes $=n, n', origin: draw $ withpen pencircle scaled 2; endfor
draw m withpen pencircle scaled 2 withcolor dark_eggshell;
draw numbered_points(egg);

drawoptions();

draw P shifted 240 right;


endfig;
\end{mplibcode}
\end{document}

