tikz 結包中的交叉點

tikz 結包中的交叉點

如何建立下圖中的十字路口?我嘗試遵循中的示例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}

在此輸入影像描述

編輯:我試圖說明雷德邁斯特的第一個舉動。為了回應安德魯的評論,我修改了程式碼,使交叉點不在剖面的端點處,並且交叉點在不同方向上有切線。然而,問題仍然存在:

\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}

雷德邁斯特的第一次舉動

相關內容