下の図のように交差部分を作るにはどうしたらいいでしょうか?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
結び目図の交点を見つけるのは時間のかかるプロセスなので、結び目ライブラリはいくつかの最適化を行います。これらの最適化は必要に応じて無効にすることができます。これらは次のとおりです。
- デフォルトでは、別々のパス間の交差点のみを調べます。
consider self intersections=true
これを上書きします。 - 自己交差を調べる場合、パスをセクションに分割し、これらのセクション間の交差を考慮する必要があります。連続するセクションは明らかにその終点で交差しますが、これらは疑似交差とみなされ、必要な交差を排除するため、デフォルトではセクションの終点に近い交差は無視されます。「近い」と見なされるものは、
end tolerance=<dimen>
(簡単にするために l^1 ノルムを使用します) によって決定されます。 - エンドポイントの交差を無視することは、キーによって完全に無効にすることができます
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}