Here is an attempt with MetaPost (included in a LuaLaTeX program), for those who are interested in it.
Note that is not straightforward either to draw this kind of intersection with MetaPost. If you look at the first ellipse's definition in the program below,
fullcircle rotated 90 xscaled 9cm yscaled 3cm shifted (3.2cm, 0);
then notice the rotated 90 part. It looks weird since it means that a rotation is applied to a circle, but if you suppress this part, nothing would work at all. The explanation lies within the intricacies of the buildcycle macro of MetaPost (the same as Asymptote's, by the way), which were discussed in detail in this topic.
UPDATE Since the second ellipse is now defined in a different manner than previously (i.e. now by rotating the first one), it makes the rotated 90 part in the definition of the first ellipse unnecessary. I've simplified the code accordingly. Still, it is good to have in mind the limitation of the buildcycle macro when tackling this sort of task.
\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
color yellow; yellow = red+green;
def erase_and_fill expr pat = unfill pat; fill pat enddef;
path fig[];
fig1 = fullcircle xscaled 9cm yscaled 3cm shifted (3.2cm, 0);
fig2 = fig1 rotated 180;
beginfig(1);
for i = 1, 2: erase_and_fill fig[i] withcolor yellow; endfor
erase_and_fill buildcycle(fig1, fig2) withcolor red;
for i = 1, 2: draw fig[i]; endfor
endfig;
\end{mplibcode}
\end{document}

Now with three ellipses, like Maarten DHondt's example above:
\documentclass{standalone}
\usepackage{luamplib}
\begin{document}
\begin{mplibcode}
color yellow; yellow = red+green;
def erase_and_fill expr pat = unfill pat; fill pat enddef;
path fig[];
fig1 = fullcircle xscaled 9cm yscaled 3cm shifted (4cm, 0) rotated 30;
fig2 = fig1 rotated 120;
fig3 = fig2 rotated 120;
beginfig(1);
for i = 1 upto 3: erase_and_fill fig[i] withcolor yellow; endfor
erase_and_fill buildcycle(fig1, fig2) withcolor 0.7white;
erase_and_fill buildcycle(fig2, fig3) withcolor green;
erase_and_fill buildcycle(fig1, fig3) withcolor blue;
erase_and_fill buildcycle(fig1, fig2, fig3) withcolor red;
for i = 1 upto 3: draw fig[i]; endfor
endfig;
\end{mplibcode}
\end{document}
