
Existe alguma diferença entre essas duas bibliotecas tikz para gráficos 3D?
Eu encontrei a documentação para tikz-3dplot
emCTAN, mas nada para a \usetikzlibrary{3d}.
Pode estar relacionado aDocumentação da biblioteca tikz 3d
Responder1
tikz-3dplot
(sem s
no final) carrega a 3d
biblioteca (e também calc
) automaticamente. Portanto, ele possui todos os recursos da 3d
biblioteca simplesmente porque a carrega. Além disso, possui comandos que permitem instalar uma visualização 3D como \tdplotsetmaincoords
e \tdplotsetrotatedcoords
, e significa fazer plotagens 3D reais (daí o nome). Outras maneiras de instalar uma visualização 3D em TikZ devem usar a perspective
biblioteca (a chave é chamada 3d view
) ou pgfplots
(a chave é view
e chaves semelhantes). As convenções para os ângulos de visão diferem, infelizmente, entre esses pacotes/bibliotecas.
O objetivo principal da 3d
biblioteca é mudar para planos coordenados (como canvas is xy plane at z=<z>
), o que é algo que faz mais sentido depois de estabelecer uma visualização 3D adequada.
Coordenadas 3D são suportadas por TikZ sem mais delongas. No entanto, a vista predefinida não é ortográfica. Você pode corrigir isso escolhendo cuidadosamente x
, y
e z
, mas é muito mais conveniente usar as ferramentas mencionadas acima para isso.
Este exemplo deve ilustrar algumas dessas afirmações.
\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}
A imagem mais à esquerda não é uma projeção ortográfica de um cubo, mas mostra que você pode usar coordenadas 3D em TikZ imediatamente. As próximas imagens mostram o cubo na mesma projeção tikz-3dplot
e perspectiva, e pode-se ver que as convenções para o ângulo de latitude (geralmente chamado teta) diferem. O exemplo também ilustra uma aplicação, talvez a principal, da 3d
biblioteca: projetar algo em um plano de coordenadas. Isto funciona com nós, conforme ilustrado, mas claro também com desenhos e gráficos externos.
Observe que o objetivo principal da biblioteca de perspectiva não é instalar uma vista 3D. Em vez disso, como o próprio nome sugere, permite instalar uma visão em perspectiva de 3 pontos, mas esta discussão está além do escopo desta resposta.