Diferença entre \usetikzlibrary{3d} e \usepackage{tikz-3dplot}

Diferença entre \usetikzlibrary{3d} e \usepackage{tikz-3dplot}

Existe alguma diferença entre essas duas bibliotecas tikz para gráficos 3D?

Eu encontrei a documentação para tikz-3dplotemCTAN, mas nada para a \usetikzlibrary{3d}.

Pode estar relacionado aDocumentação da biblioteca tikz 3d

Responder1

tikz-3dplot(sem sno final) carrega a 3dbiblioteca (e também calc) automaticamente. Portanto, ele possui todos os recursos da 3dbiblioteca simplesmente porque a carrega. Além disso, possui comandos que permitem instalar uma visualização 3D como \tdplotsetmaincoordse \tdplotsetrotatedcoords, e significa fazer plotagens 3D reais (daí o nome). Outras maneiras de instalar uma visualização 3D em TikZ devem usar a perspectivebiblioteca (a chave é chamada 3d view) ou pgfplots(a chave é viewe chaves semelhantes). As convenções para os ângulos de visão diferem, infelizmente, entre esses pacotes/bibliotecas.

O objetivo principal da 3dbiblioteca é 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, ye 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}

insira a descrição da imagem aqui

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-3dplote 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 3dbiblioteca: 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.

informação relacionada