如何建立下圖中的十字路口?我嘗試遵循中的示例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
在結圖中尋找交點是一個漫長的過程,因此結庫進行了一些最佳化,如果需要可以將其關閉。這些都是:
- 預設情況下,它僅查看單獨路徑之間的交叉點。
consider self intersections=true
覆蓋這個。 - 當查看自身交叉點時,它必須將路徑分成幾個部分並考慮這些部分之間的交叉點。連續的部分顯然在其端點處相交,這些被認為是虛假的交叉點,並且會擠出想要的交叉點,因此默認情況下它會忽略靠近部分端點的交叉點。它認為「接近」的值由下式決定
end tolerance=<dimen>
(為簡單起見,它使用 l^1 範數)。 - 可以透過 鍵完全停用忽略端點交叉點
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}