u:=15pt;
def DrawPaths(text lis) =
pickup pencircle scaled .3pt;
for i=lis:
draw pat[i];
pat[10+i]:=(point 0 of pat[i]) -- (point 4 of pat[i]);
draw pat[10+i];
endfor;
pickup defaultpen;
enddef;
beginfig(1);
path pat[]; picture lab;
delta=60u;
rnR=4u;
pat0=halfcircle scaled delta;
z0=(4u, 4u); z1=(xpart(z0),0);
d=2ypart(z0);
pat1=fullcircle scaled rnR shifted z0;
pat2=halfcircle scaled (delta/2) shifted z1;
pat3=halfcircle scaled (2d) shifted z1;
pat4=fullcircle scaled d shifted z0;
%0=D_\delta^+$
%1=D_{r_nR}^+(x_n)
%2=D_{\delta/2}^+(x_n')
%3=D_{2d_n}^+(x_n')
%4=D_{d_n}^+(x_n)
DrawPaths(0,1,2,3,4);
pat6=buildcycle(pat0,reverse pat10, reverse pat2, pat10);
fill pat6 withcolor .95[blue,white];
pat7=buildcycle(pat2,reverse pat12, reverse pat3, reverse pat12);
fill pat7 withcolor .95[green,white];
fill buildcycle(pat3,pat13) withcolor .95[red,white];
fill pat4 withcolor .95[blue+green,white];
unfill pat1;
input hatching;
pat5=buildcycle(pat0, pat10);
hatchoptions (withcolor .8[red,white] dashed evenly);
hatchfill pat5 withcolor (45, 3mm, -.5bp);
unfill buildcycle(pat1,pat11);
label.bot(btex $D_\delta^+$ etex, point 0 of pat0);
dotlabel.bot(btex $x_n$ etex, z0) withpen pencircle scaled 1.5pt;
dotlabel.bot(btex $x_n'$ etex, z1) withpen pencircle scaled 1.5pt;
dotlabel.bot(btex $0$ etex, origin) withpen pencircle scaled 1.5pt;
lab:=thelabel.bot(btex $D_{r_nR}^+(x_n)$ etex, (point 2 of pat1)+0.5u*down);
unfill bbox lab; draw lab;
label.bot(btex $D_{\delta/2}^+(x_n')$ etex, point 0 of pat2);
label.bot(btex $D_{2d_n}^+(x_n')$ etex, point 0 of pat3);
lab:=thelabel.bot(btex $D_{d_n}^+(x_n)$ etex, (point 2 of pat4)-0.5u*up);
unfill bbox lab; draw lab;
endfig;