答案1
只是为了完整性:没有用白色覆盖物体,所以如果背景中有某些东西和/或有非平凡的不透明度,这也有效。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw (0, 0) rectangle (10, 10);
\begin{scope}
\draw[clip] (0, 10) arc (180 : 360 : 5);
\fill[red] (0, 10) arc (90 : 0 : 10) -- (0,0) arc(-90:90:5);
\end{scope}
\draw (0, 10) arc (90 : 0 : 10);
\draw (0, 10) arc (90 : -90 : 5);
\end{tikzpicture}
\end{document}
答案2
您可以使用fillbetween
来自的库pgfplots
,但希望有更好的解决方案,因为这太慢了。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{fillbetween}
\begin{document}
\begin{tikzpicture}
\draw (0, 0) rectangle (10, 10);
\draw[name path=A] (0, 10) arc (90 : 0 : 10);
\draw[name path=B] (0, 10) arc (180 : 360 : 5);
\draw[name path=C] (0, 10) arc (90 : -90 : 5);
\path[intersection segments={of=A and B,sequence={A1 -- B1[reverse]}},name path=D];
\scoped[on background layer]
\fill[red, intersection segments={of=C and D,sequence={A1 -- B1[reverse]}}];
\end{tikzpicture}
\end{document}