节数交叉计算不止一次

节数交叉计算不止一次

我是 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}

外观

相关内容