Einfärben der Schnittmenge von vier Kreisen mit TikZ

Einfärben der Schnittmenge von vier Kreisen mit TikZ

Ich möchte die Schnittpunkte von vier Kreisen selektiv füllen, wie unten gezeigt.

was ich möchte

Einige der Kreuzungen konnte ich richtig machen, aber ich konnte nicht herausfinden, wie ich die übrigen machen sollte.

Hier ist das MWE und sein Ergebnis.

 \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}

Alle weiteren Hinweise zum effizienteren oder einfacheren Zeichnen sind willkommen.

was ich möchte

Antwort1

Dadurch werden die Schnittpunkte unterschiedlich gefüllt. Es ist etwas schwierig, anhand des Schwarzweißbilds zu beurteilen, was Sie genau erreichen möchten, und ich entschuldige mich im Voraus für mögliche Fehlinterpretationen. Beachten Sie auch, dass Sie einen bestimmten Clip in einen Bereich einfügen müssen, wenn Sie ihn nur auf einige Pfade/Füllungen anwenden möchten. Und es ist wohl vorteilhaft, wiederholte Pfade irgendwie zu speichern. Eine Möglichkeit ist 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}

Bildbeschreibung hier eingeben

Was Ihre geklärte Frage betrifft: Verwenden Sie 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}

Bildbeschreibung hier eingeben

Antwort2

Als ich mir den von @Raaja geposteten Hinweis ansah, stellte ich fest, dass die Nichtverwendung scopedazu führte, dass die Clips nicht gerendert wurden. Mit Spielraum für jeden Clip konnte ich die erforderliche Konstruktion erreichen. Obwohl die Lösung weder elegant noch effizient ist, kann sie vielleicht einfacher/besser gemacht werden. Hier ist sie.

\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} 

Wenn ich eine andere Farbe als Schwarz verwende, entsteht ein Bild mit schwarzem Umriss, den ich nicht entfernen kann. Die Verwendung einer beliebigen Option clipscheint nicht zulässig zu sein.

Bildbeschreibung hier eingeben

verwandte Informationen