使用 Tkz-Euclide 填充圆圈之间的区域

使用 Tkz-Euclide 填充圆圈之间的区域

我正在尝试使用 TikZ 或 Tkz-Euclide 填充以 C 为中心的圆内但以 B 为中心的圆外的区域,但我无法这样做。我刚刚得到了类似问题的帮助我试图利用它来为自己谋利,但无济于事。

\documentclass[10pt]{scrartcl}

\usepackage{tkz-euclide}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzpicture}
\tkzDefPoints{0/0/A, 1/0/B, 2/0/C, 3/0/D, 4/0/E, 5/0/F, 6/0/G}
\tkzDrawCircle[R](B,1cm)
\tkzDrawCircle[R](C,2cm)
\tkzDrawCircle[R](D,3cm)
\tkzDrawPoints(A,B,C,D,E,F,G)
\tkzDrawSegment(A,G)
\tkzLabelPoints[below](B,D,F)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](G)
\tkzLabelPoints[below right](C,E)
\filldraw[color=gray, opacity=0.5]
(E) arc (0:180:2cm);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

我可以写另一条评论,但也许当我使用答案时会更清楚,因为这样我可以添加屏幕截图。正如我在评论中所说,你可以省略大部分坐标。写答案的原因是我想鼓励你使用库来backgrounds实现这一点。我认为你添加了不透明度,因为你不想删除节点。如果是这种情况,你可以将填充放在背景上。这样你也可以使用全色。这也适用于不错的解决方案由 J. Leon V. 提出。如您所见,标签不会变得模糊。

\documentclass[10pt]{scrartcl}

\usepackage{tikz}
\usepackage{tkz-euclide}
\usetikzlibrary{calc,backgrounds}

\begin{document}

\begin{tikzpicture}
\tkzDefPoints{0/0/A, 1/0/B, 2/0/C, 3/0/D, 4/0/E, 5/0/F, 6/0/G}
\tkzDrawCircle[R](B,1cm)
\tkzDrawCircle[R](C,2cm)
\tkzDrawCircle[R](D,3cm)
\tkzDrawPoints(A,B,C,D,E,F,G)
\tkzDrawSegment(A,G)
\tkzLabelPoints[below](B,D,F)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](G)
\tkzLabelPoints[below right](C,E)
\begin{scope}[on background layer]
\fill[gray!50] (A) arc(-180:180:2cm) arc(180:-180:1cm) --cycle;
\fill[blue](A) arc(-180:180:3cm) arc(180:-180:2cm) --cycle;
\end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

以下仅是上半部分和下半部分的示例。

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{tkz-euclide}
\usetikzlibrary{calc,backgrounds}

\begin{document}
\begin{tikzpicture}
\tkzDefPoints{0/0/A, 1/0/B, 2/0/C, 3/0/D, 4/0/E, 5/0/F, 6/0/G}
\tkzDrawCircle[R](B,1cm)
\tkzDrawCircle[R](C,2cm)
\tkzDrawCircle[R](D,3cm)
\tkzDrawPoints(A,B,C,D,E,F,G)
\tkzDrawSegment(A,G)
\tkzLabelPoints[below](B,D,F)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](G)
\tkzLabelPoints[below right](C,E)
\begin{scope}[on background layer]
\fill[gray!50] (A) arc(180:00:2cm) -- (C) arc(00:180:1cm) --cycle;
\fill[blue] (A) arc(180:360:3cm) --(E) arc(00:-180:2cm)  --cycle;
\end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

我成功了。结果如下:

\documentclass[10pt]{scrartcl}

\usepackage{tikz}
\usepackage{tkz-euclide}
\usetikzlibrary{calc}

\begin{document}

\begin{tikzpicture}
\tkzDefPoints{0/0/A, 1/0/B, 2/0/C, 3/0/D, 4/0/E, 5/0/F, 6/0/G}
\tkzDrawCircle[R](B,1cm)
\tkzDrawCircle[R](C,2cm)
\tkzDrawCircle[R](D,3cm)
\tkzDrawSegment(A,G)
\tkzLabelPoints[below](B,D,F)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](G)
\tkzLabelPoints[below right](C,E)
\filldraw[color=gray, opacity=0.5]
(E) arc (0:180:2cm) --
(A) arc (180:-180:1cm) --
(A) arc (-180:0:2cm) -- cycle;
\tkzDrawPoints(A,B,C,D,E,F,G)
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

可以用 填充此区域even odd rule。我已经在 中解释了此规则这个答案。这里的路径是由3个圆圈连续组成:

\draw[fill=green, even odd rule] (D) circle(3cm)(B) circle (1cm) (C) circle (2cm);

这里要着色的区域是甚至的区域even odd rule没有被着色。为了用 着色even odd rule,这个区域必须是奇怪的为此,只需将最大的圆圈(中心 D)再次添加到由其他三个圆圈组成的路径中。

\draw[fill=green, even odd rule] (D) circle(3cm)(B) circle (1cm) (C) circle (2cm) (D) circle(3cm);

完整代码:

\documentclass[10pt]{scrartcl}
\usepackage{tikz}
\usepackage{tkz-euclide}
\usetikzlibrary{calc,backgrounds}

\begin{document}
\begin{tikzpicture}
\tkzDefPoints{0/0/A, 1/0/B, 2/0/C, 3/0/D, 4/0/E, 5/0/F, 6/0/G}
\draw[fill=green, even odd rule] (D) circle(3cm)(B) circle (1cm) (C) circle (2cm) (D) circle(3cm);
\tkzDrawPoints(A,B,C,D,E,F,G)
\tkzDrawSegment(A,G)
\tkzLabelPoints[below](B,D,F)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](G)
\tkzLabelPoints[below right](C,E)
\end{tikzpicture}
\end{document}

绘制两次中心圆D的结果:

输出-4-圆圈

默认输出(3个圆圈):

输出-3-圆圈 使用 www.DeepL.com/Translator 翻译

答案4

\documentclass[10pt]{scrartcl} 
\usepackage{tkz-euclide}

\begin{document}

\begin{tikzpicture}
\tkzDefPoints{0/0/A, 1/0/B, 2/0/C, 3/0/D, 4/0/E, 5/0/F, 6/0/G}
\tkzFillCircle[blue!20](C,E)
\tkzFillCircle[white](B,C)
\tkzDrawCircle[R](B,1)
\tkzDrawCircle[R](C,2)
\tkzDrawCircle[R](D,3)
\tkzDrawPoints(A,B,C,D,E,F,G)
\tkzDrawSegment(A,G)
\tkzLabelPoints[below](B,D,F)
\tkzLabelPoints[left](A)
\tkzLabelPoints[right](G)
\tkzLabelPoints[below right](C,E)
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容