
Есть ли разница между этими двумя библиотеками tikz для 3D-графиков?
Я нашел документацию tikz-3dplot
дляКТАН, но ничего для \usetikzlibrary{3d}.
Может быть связано сДокументация библиотеки tikz 3d
решение1
tikz-3dplot
(без s
в конце) загружает 3d
библиотеку (и также calc
) автоматически. Таким образом, он имеет все возможности библиотеки 3d
просто потому, что загружает ее. Кроме того, он имеет команды, которые позволяют установить 3D-вид, как \tdplotsetmaincoords
и \tdplotsetrotatedcoords
, и означает делать настоящие 3D-графики (отсюда и название). Другие способы установки 3D-вида в TiкZ — использовать perspective
библиотеку (ключ называется 3d view
) или pgfplots
(ключ называется view
и подобные ключи). К сожалению, соглашения об углах обзора различаются между этими пакетами/библиотеками.
Основное назначение библиотеки 3d
— переключение на координатные плоскости (такие как canvas is xy plane at z=<z>
), что, конечно, имеет смысл, как только вы настроите правильное трехмерное изображение.
3D-координаты поддерживаются TiкZ без лишних слов. Однако предопределенный вид не является ортографическим. Вы можете исправить это, тщательно выбрав x
, y
и z
, но гораздо удобнее использовать для этого вышеупомянутые инструменты.
Этот пример призван проиллюстрировать некоторые из этих утверждений.
\documentclass[tikz,border=3mm]{standalone}
\usepackage{tikz-3dplot}
\usetikzlibrary{perspective}
\begin{document}
\begin{tikzpicture}[cube/.style={insert path={
(-1,-1,-1) edge ++(0,0,2) -- (1,-1,-1) edge ++(0,0,2)
-- (1,1,-1) edge ++(0,0,2) -- (-1,1,-1) edge ++(0,0,2) -- cycle
(-1,-1,1) -- (1,-1,1) -- (1,1,1) -- (-1,1,1) -- cycle
}}]
\def\LabelPlanes{
\node[canvas is xy plane at z=1,transform shape]{xy plane};
\node[canvas is xz plane at y=1,transform shape]{xz plane};
\node[canvas is yz plane at x=1,transform shape]{yz plane};}
\begin{scope}[local bounding box=A]
\draw[cube];
\LabelPlanes
\end{scope}
\path (A.south) node[below]{plain Ti\emph{k}Z};
%
\tdplotsetmaincoords{70}{110}% theta,phi
\begin{scope}[xshift=4cm,tdplot_main_coords,local bounding box=B]
\draw[cube];
\LabelPlanes
\end{scope}
\path (B.south) node[below]{\texttt{tikz-3dplot}};
%
\begin{scope}[xshift=8cm,3d view={110}{20},% phi,90-theta of tikz-3dplot
local bounding box=C]
\draw[cube];
\LabelPlanes
\end{scope}
\path (C.south) node[below]{\texttt{perspective}};
\end{tikzpicture}
\end{document}
Крайняя левая картинка не является ортогональной проекцией куба, но показывает, что вы можете использовать трехмерные координаты в TiкZ сразу. На следующих рисунках показан куб в той же проекции в tikz-3dplot
и перспективе, и можно увидеть, что условные обозначения для угла широты (обычно называемого тета) различаются. Пример также иллюстрирует одно, возможно, главное, применение библиотеки 3d
: проецирование чего-либо на координатную плоскость. Это работает с узлами, как показано, но, конечно, также с чертежами и внешней графикой.
Обратите внимание, что основная цель библиотеки перспектив — не установка 3D-вида. Скорее, как следует из ее названия, она позволяет установить 3-точечный перспективный вид, но это обсуждение выходит за рамки этого ответа.