Ich möchte die Schnittpunkte von vier Kreisen selektiv füllen, wie unten gezeigt.
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.
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}
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}
Antwort2
Als ich mir den von @Raaja geposteten Hinweis ansah, stellte ich fest, dass die Nichtverwendung scope
dazu 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 clip
scheint nicht zulässig zu sein.