Wie kann ich eine Kreuzung im Bild unten erstellen? Ich habe versucht, Beispiele aus demHandbuch für das Tikz Knots-Paket.
\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}
EDIT: Ich versuche, den ersten Reidemeister-Zug zu veranschaulichen. Als Antwort auf Andrews Kommentar habe ich meinen Code so geändert, dass die Kreuzung nicht am Endpunkt eines Abschnitts liegt und die Kreuzung Tangenten in verschiedene Richtungen hat. Das Problem besteht jedoch weiterhin:
\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}
Antwort1
Das Finden der Schnittpunkte in einem Knotendiagramm ist ein langwieriger Prozess, daher nimmt die Knotenbibliothek einige Optimierungen vor, die bei Bedarf deaktiviert werden können. Diese sind:
- Standardmäßig werden nur Schnittpunkte zwischen separaten Pfaden berücksichtigt.
consider self intersections=true
überschreibt dies. - Wenn man sich Selbstschnittpunkte ansieht, muss es den Pfad in Abschnitte aufteilen und Schnittpunkte zwischen diesen Abschnitten berücksichtigen. Aufeinanderfolgende Abschnitte schneiden sich offensichtlich an ihren Endpunkten. Diese werden als falsche Schnittpunkte betrachtet und würden die gewünschten verdrängen. Daher ignoriert es standardmäßig Schnittpunkte, die sich in der Nähe eines Endpunkts eines Abschnitts befinden. Was es als „nahe“ betrachtet, wird bestimmt durch
end tolerance=<dimen>
(der Einfachheit halber verwendet es die l^1-Norm). - Das Ignorieren von Endpunktkreuzungen kann mit der Taste vollständig deaktiviert werden
ignore endpoint intersections=false
.
Hier sind drei Lösungen. Die erste passt den Pfad so an, dass der Schnittpunkt nicht in der Nähe eines Abschnittsendpunkts (d. h. in der Nähe eines angegebenen Punkts auf dem Pfad) liegt. Die zweite verwendet eine kleinere Anpassung und passt diese end tolerance=<dimen>
ebenfalls an. Die dritte verwendet den Schlüssel ignore endpoint intersections=false
auf dem ursprünglichen Pfad.
\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}