Проблема с порядком пересечений с использованием библиотеки 3d tikz

Проблема с порядком пересечений с использованием библиотеки 3d tikz

Мне бы хотелось получить пересечения двух путей в определенном порядке.

Когда эти пути нарисованы в виде двухмерной картинки, все в порядке.

Но по какой-то причине, когда я рисую ту же фигуру с помощью 3dбиблиотеки, порядок пересечений меняется, несмотря на sort byключ.

Кто-нибудь знает, как добиться правильного порядка в 3D-корпусе?

МВЭ:

\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{3d, intersections}

\begin{document}

% 2D picture : order of intersections is OK
\begin{tikzpicture}
  \draw[red, name path = structure]   (3,-1)coordinate(A) -- (3,1) -- (1,1)coordinate(B) --  (0,0) -- (2,0) -- (3,1);
  \draw[blue,->, name path = line] (A) -- (B);
  \draw [name intersections={of=structure and line, name=i, sort by=line}] (i-1) node{+}node[below]{1} (i-2) node{+}node[below]{2} (i-3) node{+}node[below]{3};
\end{tikzpicture}

% 3D picture : order of intersections is weird
\begin{tikzpicture}[x  = {(1cm,0cm)},  y  = {(0.5cm,0.5cm)},   z  = {(0cm,1cm)}]
  \draw[red, name path = structure] (2,2,0)coordinate(A) -- ++(0,0,2) --++(-2,0,0)coordinate(B) --++(0,-2,0) --++(2,0,0) --++(0,2,0);
  \draw[blue,->, name path = line] (A) -- (B);
  \draw [name intersections={of=structure and line, name=i, sort by=line}] (i-1) node{+}node[below]{1} (i-2) node{+}node[below]{2} (i-3) node{+}node[below]{3};
\end{tikzpicture}

\end{document}

2D изображение:

2D изображение

3D изображение:

3D изображение

решение1

ИМХО, это не имеет ничего общего с 3D, а связано с тем, что сортировка по прямым линиям, нарисованным с помощью-- в результате получается немного лотерея. Это подробно обсуждалось в разделеэтот вопрос, и чтобы решить ее, вы можете нарисовать прямую линию, которая будет выглядеть как кривая.

\documentclass[tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{3d, intersections}

\begin{document}

% 2D picture : order of intersections is OK
\begin{tikzpicture}
  \draw[red, name path = structure]   (3,-1)coordinate(A) -- (3,1) -- (1,1)coordinate(B) --  (0,0) -- (2,0) -- (3,1);
  \draw[blue,->, name path = line] (A) -- (B);
  \draw [name intersections={of=structure and line, name=i, sort by=line}] (i-1) node{+}node[below]{1} (i-2) node{+}node[below]{2} (i-3) node{+}node[below]{3};
\end{tikzpicture}

% 3D picture : order of intersections is weird
\begin{tikzpicture}[x  = {(1cm,0cm)},  y  = {(0.5cm,0.5cm)},   z  = {(0cm,1cm)}]
  \draw[red, name path = structure] (2,2,0)coordinate(A) -- ++(0,0,2) --++(-2,0,0)coordinate(B) --++(0,-2,0) --++(2,0,0) --++(0,2,0);
  \draw[blue,->, name path = line] (A) to[bend left=0] (B);
  \draw [name intersections={of=structure and line, name=i, sort by=line}] (i-1) node{+}node[below]{1} (i-2) node{+}node[below]{2} (i-3) node{+}node[below]{3};
\end{tikzpicture}

\end{document}

введите описание изображения здесь

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