答案1
tikz-3dplot
s
(末尾没有)会自动加载3d
库(以及calc
)。因此,它具有库的所有功能,3d
因为它会加载它。此外,它还具有允许安装 3d 视图的命令,如\tdplotsetmaincoords
和\tdplotsetrotatedcoords
,以及用于绘制真实 3d 图的命令(因此得名)。在 Ti 中安装 3d 视图的其他方法钾Z 是使用perspective
库(键名为3d view
)或pgfplots
(键为view
和类似键)。遗憾的是,这些包/库之间的视角约定不同。
该库的主要目的3d
是切换到坐标平面(例如canvas is xy plane at z=<z>
),当然,一旦建立了适当的 3D 视图,这便是最有意义的。
Ti 支持 3d 坐标钾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 中使用 3d 坐标钾Z 马上。接下来的图片显示了立方体在相同投影tikz-3dplot
和透视中的情形,可以看出纬度角(通常称为 theta)的约定不同。该示例还说明了3d
库的一个(也许是主要)应用:在坐标平面上投影某物。这适用于节点,如图所示,但当然也适用于绘图和外部图形。
请注意,透视库的主要目的不是安装 3D 视图。相反,正如其名称所暗示的那样,它允许安装三点透视视图,但这个讨论超出了本答案的范围。