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}

ここに画像の説明を入力してください

編集: 最初のライデマイスター移動を説明しようとしています。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

ここに 3 つの解決策があります。最初の解決策は、交差がセクションの終点 (つまり、パス上の指定されたポイント) の近くにならないようにパスを調整します。2 番目の解決策は、より小さな調整を使用してend tolerance=<dimen>同様に調整します。3 番目の解決策は、元のパス上のキーを使用します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}

ライデマイスターの最初の動き

関連情報