使用 `\filldraw` 时绘制不连续的线条

使用 `\filldraw` 时绘制不连续的线条

我的目标是绘制一个 90° 圆环截面,并填充一些图案(在本例中为点),这样只有圆环的内部和外部边界是实线,而不是圆环被切割处的人工线。我尝试的方法如下面代码部分所示,但没有得到想要的结果。

在此处输入图片描述

\documentclass{article} 
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{patterns}
\usetikzlibrary{calc}
\usetikzlibrary{arrows.meta}
\begin{document}

\begin{tikzpicture}[scale=5]
\filldraw[pattern=  dots] (-1,0) arc (180:90:1)  (0, 0.9) arc (90:180:0.9);
\end{tikzpicture}

\end{document}

当你将重要线条改为

\filldraw[pattern=  dots] (-1,0) arc (180:90:1) -- (0, 0.9) arc (90:180:0.9) -- cycle;

你得到了我想要的结果,但是图片中出现了两条我不想要的直线。为什么它没有按照我想象的方式工作?我怎样才能实现这种效果?

编辑:我确实找到了可行的解决方案,但这些解决方案似乎不必要地冗长,或者由于过多的复制粘贴而使图片编辑变得非常麻烦,例如

\filldpattern=  dots] (-1,0) arc (180:90:1) -- (0, 0.9) arc (90:180:0.9) -- cycle;
\draw[-] (-1,0) arc (180:90:1)  (0, 0.9) arc (90:180:0.9);

答案1

像这样?

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{%arrows.meta, calc, 
                patterns}

\begin{document}

\begin{tikzpicture}[scale=5]
\fill[pattern= dots]        ( 0,0.0) -- (-1,0) arc (180:90:1) -- cycle;
\draw                       (-1,0.0) arc (180:90:1);
\fill[white]                ( 0,0.0) -- (0, 0.9) arc (90:180:0.9) -- cycle;
\draw                       ( 0,0.9) arc (90:180:0.9);
\end{tikzpicture}

\end{document}

附录:您可以使用以下方法获得相同的结果:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{%arrows.meta, calc,
                patterns}

\begin{document}
\begin{tikzpicture}[scale=5]
\fill[pattern= dots]        (-1,0.0) arc (180:90:1) -- (0, 0.9)
                                     arc (90:180:0.9) -- cycle;
\draw                       (-1,0.0) arc (180:90:1);
\draw                       ( 0,0.9) arc (90:180:0.9);
\end{tikzpicture}
\end{document}

如您所见,它与您的代码不同,它将两个圆弧连接在一条封闭曲线中。

相关内容