Quiero llenar selectivamente la intersección de cuatro círculos como se muestra a continuación.
Pude hacer algunas de las intersecciones correctamente pero no pude descubrir cómo hacer las restantes.
Aquí está el MWE y su resultado.
\documentclass[10pt]{article}
\usepackage{pgf,tikz}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\clip(0,0) rectangle (4.2,3);
\fill [fill=blue] (1.64,1.22) circle (1.16cm);
\fill[fill=white] (1.34,1.11) circle (0.53cm);
\fill[fill=blue](2.50,1.71) circle (1.18cm);
\fill [fill=blue](1.02,1.99) circle (0.82cm);
\clip [](1.02,1.99) circle (0.82cm);
\fill [fill=yellow] (1.34,1.11) circle (0.53cm);
\clip [] (2.50,1.71) circle (1.18cm);
\fill [fill=green] (1.34,1.11) circle (0.53cm);
\clip [] (1.02,1.99) circle (0.82cm);
\fill [fill=white] (2.50,1.71) circle (1.18cm);
\clip [] (1.64,1.22) circle (1.16cm);
\fill [fill=red] (2.50,1.71) circle (1.18cm);
\clip [] (1.34,1.11) circle (0.53cm);
\fill [fill=white] (1.02,1.99) circle (0.82cm);
\clip [] (1.34,1.11) circle (0.53cm);
\fill [fill=black] (2.50,1.71) circle (1.18cm);
\end{tikzpicture}
\end{document}
Cualquier otra sugerencia para dibujarlo de manera más eficiente o sencilla sería bienvenida.
Respuesta1
Esto llena las intersecciones de manera diferente. Es un poco difícil juzgar a partir de la imagen de BW qué es exactamente lo que desea lograr y pido disculpas de antemano por posibles malas interpretaciones. Tenga en cuenta también que, si desea aplicar un clip determinado solo a algunos trazados/rellenos, debe colocarlo en un alcance. Y podría decirse que es ventajoso almacenar rutas repetidas de alguna manera, siendo una posibilidad insert path
.
\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}[my circ/.style={insert path={
\ifcase#1
\or
(1.64,1.22) circle (1.16cm)
\or
(2.50,1.71) circle (1.18cm)
\or
(1.02,1.99) circle (0.82cm)
\or
(1.34,1.11) circle (0.53cm)
\fi}}]
\clip(0,0) rectangle (4.2,3);
\fill[blue,my circ/.list={1,2,3}];
\fill[white,my circ=4];
\foreach \Y/\Z in {{1,2}/magenta,{1,3}/magenta,{1,2,3}/yellow,{1,2,4}/green,{1,3,4}/orange,
{2,3,4}/purple,{2,3}/cyan,{1,2,3}/red}
{\begin{scope}
\foreach \X in \Y
{\clip [my circ=\X];}
\fill[\Z] (0,0) rectangle (4.2,3);
\end{scope}}
\end{tikzpicture}
\end{document}
En cuanto a su pregunta aclarada: use even odd rule
.
\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\begin{tikzpicture}[my circ/.style={insert path={
\ifcase#1
\or
(1.64,1.22) circle (1.16cm)
\or
(2.50,1.71) circle (1.18cm)
\or
(1.02,1.99) circle (0.82cm)
\or
(1.34,1.11) circle (0.53cm)
\fi}}]
\fill[even odd rule,my circ/.list={1,2,3,4}];
\end{tikzpicture}
\end{document}
Respuesta2
Al mirar la pista publicada por @Raaja, descubrí que no usarla scope
causaba que los clips no se renderizaran. Con posibilidades para cada clip, pude lograr la construcción requerida. Aunque la solución no es elegante ni eficiente, tal vez pueda hacerse más fácil o mejor. Aquí va.
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\path
(1.64,1.22) coordinate (C)
(1.34,1.11) coordinate (A)
(2.50,1.71) coordinate (B)
(1.02,1.99) coordinate (D);
\fill [fill=black](B) circle (1.18cm);
\fill [fill=black](C) circle (1.16cm);
\fill [fill=white](A) circle (0.53cm);
\fill [fill=black](D) circle (0.82cm);
\begin{scope}
\draw[clip] (B) circle (1.18cm);
\fill[white] (C) circle (1.16cm);
\end{scope}
\begin{scope}
\draw[clip] (A) circle (0.53cm);
\fill[black] (B) circle (1.18cm);
\end{scope}
\begin{scope}%top white corner
\draw[clip] (D) circle (0.82cm);
\fill[white] (B) circle (1.18cm);
\end{scope}
\begin{scope}
\draw[clip] (D) circle (0.82cm);
\fill[white] (C) circle (1.16cm);
\end{scope}
\begin{scope}
\draw[clip] (A) circle (0.53cm);
\fill [black] (D) circle (0.82cm);
\end{scope}
\begin{scope}%
\draw[clip] (B) circle (1.18cm);
\draw[clip] (C) circle (1.16cm);
\fill[black] (D) circle (0.82cm);
\end{scope}
\begin{scope}% centre white triangle
\draw[clip] (B) circle (1.18cm);
\draw[clip] (C) circle (1.16cm);
\draw[clip] (A) circle (0.53cm);
\fill[white] (D) circle (0.82cm);
\end{scope}
\end{tikzpicture}
\end{document}
Aunque utilizo cualquier otro color que no sea el negro, produce una imagen con un contorno negro que no puedo eliminar. El uso de cualquier opción clip
parece no estar permitido.