Пересечения в пакете узлов тикз

Пересечения в пакете узлов тикз

Как мне создать пересечение на картинке ниже? Я пытался следовать примерам вруководство для пакета 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

Поиск пересечений в диаграмме узлов — длительный процесс, поэтому библиотека узлов делает несколько оптимизаций, которые можно отключить при необходимости. Это:

  1. По умолчанию он учитывает только пересечения отдельных путей. consider self intersections=trueпереопределяет это.
  2. При рассмотрении самопересечений он должен разбить путь на секции и рассмотреть пересечения между этими секциями. Последовательные секции, очевидно, пересекаются в своих конечных точках, они считаются ложными пересечениями и вытесняют нужные, поэтому по умолчанию он игнорирует пересечения, которые находятся рядом с конечной точкой секции. То, что он считает «близким», определяется end tolerance=<dimen>(для простоты он использует норму l^1).
  3. Игнорирование пересечений конечных точек можно полностью отключить с помощью клавиши 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}

Первый ход Рейдемейстера

Связанный контент