\documentclass{standalone} \usepackage{luamplib} \usepackage{dwmpcode} \begin{document} \mplibtextextlabel{enable} \begin{mplibcode} beginfig(3); path A, B; picture p[]; A = fullcircle scaled 2.5cm; B = fullcircle scaled 1.8cm shifted (1cm,0); p1 = image(fill buildcycle(A,B) withcolor .8[blue,white]; drawarrow A; drawarrow B;); A := A rotated 180; p2 = image(fill buildcycle(A,B) withcolor .8[blue,white]; drawarrow A; drawarrow B;); B := B rotatedabout(center B,180); p3 = image(fill buildcycle(A,B) withcolor .8[blue,white]; drawarrow A; drawarrow B;); A := A rotated 180; p4 = image(fill buildcycle(A,B) withcolor .8[blue,white]; drawarrow A; drawarrow B;); B := B rotatedabout(center B, 180); A := reverse A; p5 = image(fill buildcycle(A,B) withcolor .8[blue,white]; drawarrow A; drawarrow B;); A := A rotated 180; p6 = image(fill buildcycle(A,B) withcolor .8[blue,white]; drawarrow A; drawarrow B;); B := B rotatedabout(center B,180); p7 = image(fill buildcycle(A,B) withcolor .8[blue,white]; drawarrow A; drawarrow B;); A := A rotated 180; p8 = image(fill buildcycle(A,B) withcolor .8[blue,white]; drawarrow A; drawarrow B;); for i=1 upto 4: draw p[i] scaled .75 shifted (80i, 0); label(decimal i, (5mm+80i,0)); endfor for i=1 upto 4: draw p[i+4] scaled .75 shifted (80i,-68); label(decimal (4+i), (5mm+80i,-68)); endfor picture L; L = image( for i=0 upto 3: fill unitsquare scaled 2 shifted (1/2,1/2) rotated (45+90i); endfor label.rt("\small To rotate a circular path, you can use: \mpl{p rotatedaround(center p, 180)}", 3 right); ); label(L, point 1/2 of bbox currentpicture shifted 21 down); endfig; \end{mplibcode} \end{document}