![节数交叉计算不止一次](https://linux22.com/image/457236/%E8%8A%82%E6%95%B0%E4%BA%A4%E5%8F%89%E8%AE%A1%E7%AE%97%E4%B8%8D%E6%AD%A2%E4%B8%80%E6%AC%A1.png)
我是 TikZ 库的新手knots
,在绘制一些简单的结时遇到了问题。对于下面的 MWE,库声称有 12 个交叉点,但实际上只有 4 个。此外,一些交叉点收到不止一个数字,我不知道如何可靠地控制翻转。 \flipcrossings{2}
似乎对编号为 2 的交叉点没有任何影响,而\flipcrossings{9}
有。我猜这是因为 9 是这个特定交叉点得到的最高数字,但由于有多个数字相互叠加,因此不容易看到。
我尝试了其他环境选项knot
,也尝试了其他绘制线束的方法(例如使用to
贝塞尔曲线而不是 Hobby 曲线),但这似乎无法解决问题。
我究竟做错了什么?
\documentclass[tikz, border=5mm]{standalone}
\usetikzlibrary{knots,hobby}
\begin{document}
\begin{tikzpicture}
\begin{knot}[draft mode=crossings,consider self intersections=no splits,ignore endpoint intersections=false]
\strand[closed hobby] plot coordinates {(2.5,5) (2.5,2) (2.5,0.5) (0.5,2.5) (2.5,4) (4.5,2.5) (2.5,0.5) (2.5,2)};
\end{knot}
\end{tikzpicture}
\end{document}
仅供参考,这是我看到的(Windows 上的 MiKTeX,今天更新):
答案1
我仔细搜索了一下,发现了 Andrew Stacey(软件包作者)的评论这里他说:
当交叉点不在路径某部分的端点时,结点包背后的算法效果最佳。
因此,我稍微修改了曲线,现在它可以工作了(除了开始时的伪交叉,这不会造成损害):
\documentclass[tikz, border=5mm]{standalone}
\usetikzlibrary{knots,hobby}
\begin{document}
\begin{tikzpicture}
\begin{knot}[draft mode=crossings,consider self intersections=no splits,ignore endpoint intersections=false]
\strand[closed hobby] plot coordinates {(2.5,5) (1.6,4) (2.75,1.2) (2,0.2) (0.5,2.5) (2.5,4) (4.5,2.5) (3,0.2) (2.25,1.2) (3.4,4)};
\end{knot}
\end{tikzpicture}
\end{document}