tikz knots 包中的交叉点

tikz knots 包中的交叉点

我怎样才能在下图中创建一个交叉口?我尝试按照tikz Knots 包手册

\documentclass[11pt]{amsart}
\usepackage{tikz}
\usetikzlibrary{knots} 

\begin{document}
\begin{tikzpicture}[scale=0.75]
\begin{knot}[clip width=5, clip radius=8pt, consider self intersections]
  \strand[thick] (0,0)
    to[out=up, in=down] (0,1)
    to[out=up, in=left] (0.5,1.5)
    to[out=right, in=up]  (1,1)
    to[out=down, in=right]  (0.5,0.5)
    to[out=left, in=down]  (0,1)
    to[out=up, in=down]  (0,2);
\end{knot}
\end{tikzpicture}
\end{document}

在此处输入图片描述

编辑:我试图说明 Reidemeister 的第一个动作。为了回应 Andrew 的评论,我修改了我的代码,使交叉点不在截面的端点,并且交叉点有不同方向的切线。但是,问题仍然存在:

\begin{knot}[clip width=10, clip radius=15pt, consider self intersections]
  \strand[thick] (0,0)
    to[out=up, in=down] (0,0.7) 
    to[out=up, in=left] (0.5,1.5)
    to[out=right, in=up]  (1,1)
    to[out=down, in=right]  (0.5,0.5)
    to[out=left, in=down]  (0,1.3)
    to[out=up, in=down]  (0,2);
\end{knot}

在此处输入图片描述

答案1

在结点图中寻找交点是一个漫长的过程,因此结点库进行了一些优化,如果需要可以关闭这些优化。这些优化包括:

  1. 默认情况下,它仅查看单独路径之间的交叉点。 consider self intersections=true覆盖此。
  2. 当查看自相交时,它必须将路径分成几段并考虑这些段之间的相交。连续的段显然在其端点相交,这些相交被视为虚假相交,会挤掉想要的相交,因此默认情况下它会忽略靠近段端点的相交。它认为“附近”的交点取决于end tolerance=<dimen>(为简单起见,它使用 l^1 范数)。
  3. 可以通过 键完全禁用忽略端点交叉点ignore endpoint intersections=false

这里有三种解决方案。第一种调整路径,使交叉点不靠近部分端点(即靠近路径上的指定点)。第二种使用较小的调整,并进行调整。第三种使用原始路径上的end tolerance=<dimen>键。ignore endpoint intersections=false

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{knots}

\title{Untitled}
\author{}
\date{2020-11-11}
\begin{document}
\maketitle


\begin{tikzpicture}
\begin{knot}[clip width=10, clip radius=15pt, consider self intersections]
  \strand[thick] (0,0)
    to[out=up, in=down] (0,0.5) 
    to[out=up, in=left] (0.5,1.5)
    to[out=right, in=up]  (1,1)
    to[out=down, in=right]  (0.5,0.5)
    to[out=left, in=down]  (0,1.5)
    to[out=up, in=down]  (0,2);
\end{knot}
\end{tikzpicture}


\begin{tikzpicture}
\begin{knot}[clip width=10, clip radius=15pt, consider self intersections, end tolerance=3pt]
  \strand[thick] (0,0)
    to[out=up, in=down] (0,0.7) 
    to[out=up, in=left] (0.5,1.5)
    to[out=right, in=up]  (1,1)
    to[out=down, in=right]  (0.5,0.5)
    to[out=left, in=down]  (0,1.3)
    to[out=up, in=down]  (0,2);
\end{knot}
\end{tikzpicture}

\begin{tikzpicture}[scale=0.75]
\begin{knot}[clip width=5, clip radius=8pt, consider self intersections, ignore endpoint intersections=false]
  \strand[thick] (0,0)
    to[out=up, in=down] (0,1)
    to[out=up, in=left] (0.5,1.5)
    to[out=right, in=up]  (1,1)
    to[out=down, in=right]  (0.5,0.5)
    to[out=left, in=down]  (0,1)
    to[out=up, in=down]  (0,2);
\end{knot}
\end{tikzpicture}


\end{document}

第一个 Reidemeister 动作

相关内容