![如何闭合由圆弧构成的路径](https://linux22.com/image/348180/%E5%A6%82%E4%BD%95%E9%97%AD%E5%90%88%E7%94%B1%E5%9C%86%E5%BC%A7%E6%9E%84%E6%88%90%E7%9A%84%E8%B7%AF%E5%BE%84.png)
我有以下由某个脚本生成的代码。路径中的第一个和最后一个坐标相同。我不知道如何告诉 TikZ 关闭路径。我尝试添加 --cycle,但它似乎仅在第一个和最后一个坐标不同时才有效。作为一种解决方法,我可以稍微移动最后一个点(然后 --cycle 关闭路径),但这不是一个优雅的解决方案。我该如何关闭路径?
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[x=1cm,y=1cm]%
\filldraw[fill=green!20!white,line width=0.5mm]
(-4.5:1)
arc (-4.5 : 4.5 : 1)
arc (94.5 : 115.5 : 5.3955171743191)
arc (205.5: 214.5 : 1)
arc (124.5: -4.5 : 0.47697553269816)
arc (265.5: 274.5 : 1)
arc (184.5: 85.5 : 0.85408068546347)
-- cycle;
\end{tikzpicture}
\end{document}
user3337813 给出的建议不起作用,此示例中的缺陷更加明显:
\filldraw[fill=green!20!white] ( -4.5 :1)
arc ( -4.5 : 34.5 :1)
arc ( -55.5 : -64.5 : 12.706204736175 )
arc ( 205.5 : 214.5 :1)
arc ( 124.5 : -4.5 : 0.47697553269816 )
arc ( 265.5 : 274.5 :1)
arc ( 184.5 : 85.5 : 0.85408068546347 )
arc ( -4.5 : 34.5 :1)
-- cycle;
\end{tikzpicture}
如果我删除--cycle,结果看起来不错,但从技术上讲路径是开放的。
答案1
您可以将第一个圆弧添加为最后一个圆弧......
编辑。原帖作者认为双弧的出现是不可取的。因此,另一种方法是将第一个弧分成两个部分弧,分别放置在电路的开始和结束处:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[x=1cm,y=1cm]%
\filldraw[fill=green!20!white,line width=0.5mm]
(-4.5:1)
arc (-4.4 : 4.5 : 1)% PARTIAL ARC
arc (94.5 : 115.5 : 5.3955171743191)
arc (205.5: 214.5 : 1)
arc (124.5: -4.5 : 0.47697553269816)
arc (265.5: 274.5 : 1)
arc (184.5: 85.5 : 0.85408068546347)
arc (-4.5 : -4.4 : 1)% PARTIAL ARC (COMPLETED)
-- cycle;
\end{tikzpicture}
\end{document}
这种编辑方法解决了 OP 编辑问题中显示的反例:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[x=1cm,y=1cm]%
\filldraw[fill=green!20!white] ( -4.5 :1)
arc ( 0 : 34.5 :1)
arc ( -55.5 : -64.5 : 12.706204736175 )
arc ( 205.5 : 214.5 :1)
arc ( 124.5 : -4.5 : 0.47697553269816 )
arc ( 265.5 : 274.5 :1)
arc ( 184.5 : 85.5 : 0.85408068546347 )
arc ( -4.5 : 0 :1)
-- cycle;
\end{tikzpicture}
\end{document}
答案2
85.5
出于某种原因,如果用替换,它似乎可以工作85.6
。我不知道这对您的应用程序是否可接受。如果点太近,循环可能会出现问题。
\documentclass[border=1mm,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[x=1cm,y=1cm]%
\draw[fill=green!20!white,line width=0.5mm]
(-4.5:1)
arc (-4.5 : 4.5 : 1)
arc (94.5 : 115.5 : 5.3955171743191)
arc (205.5: 214.5 : 1)
arc (124.5: -4.5 : 0.47697553269816)
arc (265.5: 274.5 : 1)
arc (184.5: 85.6 : 0.85408068546347)
-- cycle;
\end{tikzpicture}
\end{document}