% arrange each circle so that point 0 is outside the others
C1 = fullcircle scaled 100 rotated 90 shifted 40 up;
C2 = C1 rotated 120;
C3 = C2 rotated 120;
% the illusion of blended colours is helped by buildcycle
B0 = buildcycle(C1, C2, C3);
B1 = buildcycle(C1, C2);
B2 = buildcycle(C2, C3);
B3 = buildcycle(C3, C1);
picture P;
for x=0 upto 1:
for y=0 upto 1:
P := image(
s := 1/2 + x/4;
k := 0 + y/4;
fill C1 withcolor s*(1,0,0,k);
fill C2 withcolor s*(0,1,0,k);
fill C3 withcolor s*(0,0,1,k);
fill B3 withcolor s*(1,0,1,k);
fill B2 withcolor s*(0,1,1,k);
fill B1 withcolor s*(1,1,0,k);
fill B0 withcolor s*(1,1,1,k);
undraw C1; undraw C2; undraw C3;
) shifted (200x, 180y);
draw P;
label.bot(("shade: " & decimal s & ", k: " & decimal k)
infont "phvr8r", point 1/2 of bbox P);
endfor
endfor
endfig;
\end{mplibcode}
\end{document}