
Мне бы хотелось получить пересечения двух путей в определенном порядке.
Когда эти пути нарисованы в виде двухмерной картинки, все в порядке.
Но по какой-то причине, когда я рисую ту же фигуру с помощью 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 изображение:
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}