\documentclass[border=5mm]{standalone} \usepackage{luamplib} \begin{document} \mplibtextextlabel{enable} \begin{mplibcode} def withalpha expr a = withprescript "tr_alternative=2" withprescript "tr_transparency=" & decimal a enddef; beginfig(1); numeric u; u = 24; color shade[]; string name[]; shade0 = 1/256(166, 57, 65); name0 = "R"; % rouge shade1 = 1/256(219, 170, 72); name1 = "J"; % jaune shade2 = 1/256(36, 54, 84); name2 = "B"; % bleu path edge[], arc[], ring[]; for r=1 upto 8: edge[r] = fullcircle rotated 90 scaled (2r * u) shifted (0, 7u / sqrt 3) rotated 120; endfor for i=2 upto 8: edge[i] := edge[i] cutbefore edge8 rotated 120 cutafter edge8 rotated -120; endfor arc0 = point 0 of edge1 for i=2 upto 7: .. point 0 of edge[i] endfor; arc1 = point 0 of edge1 for i=2 upto 7: .. point infinity of edge[i] endfor; for i=1 upto 7: ring[i] = edge[i] -- subpath (i-1, i) of arc1 -- reverse edge[i+1] -- subpath (i, i-1) of arc0 -- cycle; endfor for r=0, 1, 2: for i=1 upto 6: % fills first fill ring[i] rotated 120r withcolor (i/6)[white, shade[r]] withalpha 0.9; for k=0, 1: label("$\textsf{" & name[r] & "}" if i<6: & "_" & decimal i fi & "$", point i-1/2 of arc[k] shifted (-8,-2) rotated 120r); endfor endfor endfor for r=0, 1, 2: % now lines on top for i=1 upto 7: draw edge[i] rotated 120r withpen pencircle scaled 1 withcolor 7/8; endfor draw arc0 rotated 120r; draw arc1 rotated 120r; endfor endfig; \end{mplibcode} \end{document}