
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 3d
biblioteca, a ordem das interseções muda, apesar da sort by
chave.
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 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}