Разница между \usetikzlibrary{3d} и \usepackage{tikz-3dplot}

Разница между \usetikzlibrary{3d} и \usepackage{tikz-3dplot}

Есть ли разница между этими двумя библиотеками 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-точечный перспективный вид, но это обсуждение выходит за рамки этого ответа.

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