在 tikz 中填充非凸路径

在 tikz 中填充非凸路径

我正在尝试填充由两个半圆组成的路径,并且只想填充它们之间的区域。以下代码无法正常工作。

\documentclass{article}
\usepackage{tikz}
\usepackage[active,pdftex,tightpage]{preview}
\PreviewEnvironment[]{tikzpicture}
\begin{document}
 \begin{tikzpicture}
 \filldraw[yellow,draw=black] (0em,0em) arc[radius=1em, start angle=180, end angle=0]
   (2em,0em) --  (2em,-1em) arc[radius=1em, start angle=0, end angle=180]
   (0em,-1em) -- (0em,0em);
 \end{tikzpicture}
\end{document}

我得到的是:

填写错误

另外,如果我使用路径进行剪切,也会使用同样错误的填充区域。有人能弄清楚如何仅填充绘制的半圆内的区域(非凸区域)吗?

答案1

您需要指定一个连续的路径填充才能正常工作。因此,不要指定已经绘制的坐标,因为这会引入不连续性:

\documentclass[tikz,border=5pt]{standalone}
\begin{document}
\begin{tikzpicture}
\filldraw[yellow,draw=black]
  (0em,0em)
    arc[radius=1em, start angle=180, end angle=0]
    --  (2em,-1em)
    arc[radius=1em, start angle=0, end angle=180]
    -- (0em,0em);
\end{tikzpicture}
\end{document}

黄色的

答案2

\documentclass[tikz,border=4]{standalone}
\begin{document}
  \begin{tikzpicture}
  \filldraw[yellow,draw=black] (0,0) arc[radius=1em, start angle=0, end angle=180]
  --  ++(0em,-1em) arc[radius=1em, start angle=180, end angle=0]
  -- ++(0em,1em) -- cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容