Problema com a ordem das interseções usando a biblioteca 3d tikz

Problema com a ordem das interseções usando a biblioteca 3d tikz

Gostaria de obter interseções entre dois caminhos, em uma ordem específica.

Quando esses caminhos são desenhados como uma imagem 2D, está tudo bem.

Mas, por alguma razão, quando ploto a mesma figura usando a 3dbiblioteca, a ordem das interseções muda, apesar da sort bychave.

Alguém sabe como obter a ordem correta no caso 3D?

MWE:

\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}

Imagem 2D:

Imagem 2D

Imagem 3D:

Imagem 3D

Responder1

IMHO, isso não tem nada a ver com 3D, mas com o fato de que a classificação ao longo de linhas retas desenhadas com a --sintaxe, o resultado é uma espécie de loteria. Isto foi discutido longamente emessa questão, e para resolvê-lo você pode desenhar uma linha reta que finge ser uma curva.

\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}

insira a descrição da imagem aqui

informação relacionada