Как мне создать пересечение на картинке ниже? Я пытался следовать примерам вруководство для пакета 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}
EDIT: Я пытаюсь проиллюстрировать первый ход Рейдемейстера. Отвечая на комментарий Эндрю, я изменил свой код так, чтобы пересечение не было в конечной точке секции, а пересечение имело касательные в разных направлениях. Однако проблема все еще сохраняется:
\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}