![如果我在 TikZ 中构建预定义节点(而不是坐标)之间的路径,**为什么**循环根本不会返回到起始节点?](https://linux22.com/image/336122/%E5%A6%82%E6%9E%9C%E6%88%91%E5%9C%A8%20TikZ%20%E4%B8%AD%E6%9E%84%E5%BB%BA%E9%A2%84%E5%AE%9A%E4%B9%89%E8%8A%82%E7%82%B9%EF%BC%88%E8%80%8C%E4%B8%8D%E6%98%AF%E5%9D%90%E6%A0%87%EF%BC%89%E4%B9%8B%E9%97%B4%E7%9A%84%E8%B7%AF%E5%BE%84%EF%BC%8C**%E4%B8%BA%E4%BB%80%E4%B9%88**%E5%BE%AA%E7%8E%AF%E6%A0%B9%E6%9C%AC%E4%B8%8D%E4%BC%9A%E8%BF%94%E5%9B%9E%E5%88%B0%E8%B5%B7%E5%A7%8B%E8%8A%82%E7%82%B9%EF%BC%9F.png)
cycle
node
如果我使用该操作而不是标记我的点,它不会像我天真地期望的那样工作coordinate
。我意识到,在节点的情况下,TikZ 正在从节点的边界绘制。所以我可以理解三角形没有被填充,因为 TikZ 可能会将路径视为非封闭路径。(尽管在其他情况下,它实际上会完成路径以按要求填充它。)但为什么甚至没有绘制三角形的最终大小?
\documentclass[tikz,border=10pt,multi]{standalone}
\begin{document}
\begin{tikzpicture}[every node/.append style={draw}]
\node (a) at (-1,1) {};
\node (c) at (-1,-1) {};
\node (f) at (1,1) {};
\filldraw (a) -- (c) -- (f) -- cycle;
\end{tikzpicture}
\end{document}
pmav99 提出了这个问题在 2011 年。但是,那里的答案显然没有向我解释为什么什么都没有画出来。如果最后一条线返回到(a)
路径开始的 的边界锚点,我可以理解。我也可以理解,如果它返回到如果我写的而不是(a)
它将使用的 的边界锚点。但为什么它似乎没有去任何地方?(或者如果它去了某个地方,它会去哪里,为什么?)-- (a)
-- cycle
我确信这一定是重复的,但我找不到对 TikZ 所做具体方面的解释。
另外,我当然知道等\coordinate (a) ...
在这里更有意义,我可以在构建路径时定义点等。我知道如何避免这个问题。我想了解的是为什么这个问题会以特定形式发生。-- cycle
在这种情况下到底在做什么?
答案1
因为它们每一个都是从每个节点形状边界到另一个节点形状边界的单独路径。
最终的构造相当于(利用其位置的便利性)
\filldraw (a.-90) -- (c.90) % pen is lifted here hence a new path starts
(c.45) -- (f.-135) -- cycle;
因此cycle
回到(c.45)
不间断路径的起点,重新绘制路径的最后一部分并创建零区域。
将任何不共线的东西放在 (c) 和 (f) 之间,你就会得到一个填充
\filldraw (a) -- (c) -- (1,-1) --(f) -- cycle;
另一方面,坐标没有边框形状,只有中心锚点,因此它们构成有效的路径点,因此循环返回,a
因为那是连续路径的第一个点。