用 TikZ 画不标准的三视图

TikZ 的 library 提供了 3d 和 perspective, 其中 perspective 提供的 3d view 功能可以画出用空间直角坐标系所化图形的 “三视图”. 例如上图的”三视图”如下:

3s

完整代码为:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{3d,perspective}

\begin{document}

\newcommand\fcube{
	\draw[->] (0,0,0) -- (4,0,0) node[above] {$x$};
	\draw[->] (0,0,0) -- (0,4,0) node[above] {$y$};
	\draw[->] (0,0,0) -- (0,0,4) node[right] {$z$};
	\draw (2,4,2) -- (1,3,3) -- (2,2,4) -- (3,1,3) -- (4,2,2) -- (3,1,1) -- (2,2,0) -- (1,3,1) -- cycle
	(3,3,3) -- (4,2,2) -- (3,3,1) -- (2,4,2) -- cycle
	(2,2,4) -- (3,3,3)
	(2,2,0) -- (3,3,1);
	\draw [dashed] (2,2,0) -- (1,1,1) -- (2,2,2) -- (1,1,3) -- (2,2,4) -- cycle
	(2,4,2) -- (2,2,2) -- (4,2,2)
	(1,3,1) -- (1,1,1)
	(1,3,3) -- (1,1,3)
	(3,1,3) -- (2,2,2) -- (3,1,1);
}

%斜二侧画法

\begin{tikzpicture}[x={(-150:0.5cm)},y={(0:1cm)},z={(90:1cm)},scale=2,>=stealth]
	\fcube
\end{tikzpicture}

%三视图
%
\begin{tikzpicture}[scale=1.5]
	\begin{scope}[3d view={90}{0}]
		\fcube
	\end{scope}
	\begin{scope}[xshift=5cm,3d view={0}{0}]
		\fcube
	\end{scope}
	
	\begin{scope}[yshift=-1cm,3d view={90}{90}]
		\fcube
	\end{scope}
\end{tikzpicture}


\end{document}

其中 x={(-150:0.5cm)},y={(0:1cm)},z={(90:1cm)} 是为了建立斜二侧画法所用空间直角坐标系, TikZ 默认三个坐标轴方向与习惯不同. 3d view 有两个必选参数, 代表含义为

3d view

由不同的角度控制方向, 此例所给三个对应三视图的三部分. 更多参考 TikZ 手册第 63.2 节, texdoc tikz 或 ctan.org 搜索 tikz.

注记: 必须是在空间直角坐标系中画出的才可以利用, 此外侧视图和俯视图的虚实线显示未必准确, 故谓之不标准之三视图. 至于为何选择这样的一个几何体, 答案在正视图和侧视图中.