Wie füllt man die überlappenden Teile von 3 Bögen in pgf/tikz?

Wie füllt man die überlappenden Teile von 3 Bögen in pgf/tikz?

Ich habe ein Bild wie unten:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \draw(0,0) -- (4,0) -- (4,4) -- (0,4) -- (0,0);
  \draw(0,0) arc(-90:90:2);
  \draw[dashed](0,0) arc(-90:-270:2);  
  \draw(0,0) arc(180:90:4);
  \draw(0,0) arc(180:90:4);
  \draw[dashed](0,0) arc(-180:90:4);  
  \draw(4,0) arc(-90:-180:4);
  \draw[dashed](4,0) arc(-90:180:4);  
\end{tikzpicture}

\end{document}

Jetzt möchte ich Schatten auf die drei überlappenden Teile des Bogens zeichnen. Wie mache ich das? Genau wie auf diesem Bild:

Und was ist, wenn ich eine Linie zwischen ABC ziehen möchte? Wie soll ich vorgehen? Vielen Dank!

Bildbeschreibung hier eingeben

Antwort1

Abgesehen von der Schattierung der Fülllinien, so etwas wie das hier. Die Füllung können Sie mithilfe \clipeiner scopeUmgebung erstellen. Um die Koordinaten an den Schnittpunkten festzulegen, verwenden Sie die intersectionsBibliothek.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{patterns,intersections}
\begin{document}

\begin{tikzpicture}
  \begin{scope}
    \clip(0,2) circle (2);
    \clip(4,0) circle (4);
    \fill[pattern=north west lines,pattern color=red](4,4) circle (4);
  \end{scope}
  %\draw(0,0) -- (4,0) -- (4,4) -- (0,4) -- (0,0);
  \draw (0,0) rectangle (4,4);
  \draw[name path=left](0,0) arc(-90:90:2);
  \draw[dashed](0,0) arc(-90:-270:2);  
  \draw[name path=lower](0,0) arc(180:90:4);
  %\draw(0,0) arc(180:90:4);
  \draw[dashed](0,0) arc(-180:90:4);  
  \draw[name path=upper](4,0) arc(-90:-180:4);
  \draw[dashed](4,0) arc(-90:180:4);  
  %%
  \path [name intersections={of=lower and upper}];
  \coordinate (A) at (intersection-1);
  \path [name intersections={of=left and upper}];
  \coordinate (B) at (intersection-1);
  \path [name intersections={of=left and lower}];
  \coordinate (C) at (intersection-2);
  %%
  \node[left,red] at (A) {A};
  \node[below,red] at (B) {B};
  \node[above,red] at (C) {C};
  %%
  \fill[blue,fill=blue,opacity=0.3] (A)--(B)--(C)--cycle;
  \draw[blue,thick] (A)--(B)--(C)--cycle;
\end{tikzpicture}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen