Diferencia entre \usetikzlibrary{3d} y \usepackage{tikz-3dplot}

Diferencia entre \usetikzlibrary{3d} y \usepackage{tikz-3dplot}

¿Hay alguna diferencia entre esas dos bibliotecas tikz para gráficos 3D?

He encontrado la documentación paratikz-3dplot paraCTAN, pero nada para \usetikzlibrary{3d}.

Podría estar relacionado conDocumentación de la biblioteca tikz 3d.

Respuesta1

tikz-3dplot(sin al sfinal) carga la 3dbiblioteca (y también calc) automáticamente. Entonces tiene todas las características de la 3dbiblioteca simplemente porque la carga. Además, tiene comandos que permiten instalar una vista 3D como \tdplotsetmaincoordsy\tdplotsetrotatedcoords , y significa hacer gráficos 3D reales (de ahí el nombre). Otras formas de instalar una vista 3D en TikZ deben usar la perspectivebiblioteca (la clave se llama 3d view) o pgfplots(la clave es viewy claves similares). Desafortunadamente, las convenciones para los ángulos de visión difieren entre estos paquetes/bibliotecas.

El objetivo principal de la 3dbiblioteca es cambiar a planos de coordenadas (como canvas is xy plane at z=<z>), lo cual, por supuesto, es algo que tiene más sentido una vez que se ha establecido una vista 3D adecuada.

Las coordenadas 3D son compatibles con Ti.kZ sin más. Sin embargo, la vista predefinida no es ortográfica. Puede rectificar esto eligiendo cuidadosamente x, yy z, pero es mucho más conveniente utilizar las herramientas mencionadas anteriormente para eso.

Se supone que este ejemplo ilustra algunas de estas afirmaciones.

\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}

ingrese la descripción de la imagen aquí

La imagen de la izquierda no es una proyección ortográfica de un cubo, pero muestra que puedes usar coordenadas 3D en Ti.kZ de inmediato. Las siguientes imágenes muestran el cubo en la misma proyección tikz-3dploty perspectiva, y se puede ver que las convenciones para el ángulo de latitud (generalmente llamado theta) difieren. El ejemplo también ilustra una aplicación, quizás la principal, de la 3dbiblioteca: proyectar algo en un plano de coordenadas. Esto funciona con nodos, como se muestra en la imagen, pero por supuesto también con dibujos y gráficos externos.

Tenga en cuenta que el objetivo principal de la biblioteca de perspectivas no es instalar una vista 3D. Más bien, como sugiere su nombre, permite instalar una vista en perspectiva de 3 puntos, sin embargo, esta discusión está más allá del alcance de esta respuesta.

información relacionada