学会了平面几何的绘图,再学立体几何就非常简单了,不过是加一个坐标而已。平面几何可以用极坐标,但是立体几何就用不了极坐标绘图了。因为太简单了,所以我不会细讲,只是写一个立方体实例,来说明语法。
代码
\documentclass[UTF8, a4paper,12pt]{article}
\usepackage{tikz}
\usetikzlibrary{calc,angles,quotes}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (0,0,0);
\coordinate (B) at ($(A)+(0,2,0)$);
\coordinate (C) at ($(A)+(2,0,0)$);
\coordinate (D) at ($(A)+(0,0,2)$);
\coordinate (E) at ($(A)+(2,2,0)$);
\coordinate (F) at ($(A)+(2,0,2)$);
\coordinate (G) at ($(A)+(0,2,2)$);
\coordinate (H) at ($(A)+(2,2,2)$);
\draw (A) -- (B) -- (E) -- (C) circle;
\draw (A) -- (C) -- (F) -- (D) circle;
\draw (A) -- (D) -- (G) -- (B) circle;
\draw (B) -- (E) -- (H) -- (G) circle;
\draw (E) -- (C) -- (F) -- (H) circle;
\foreach \x in {A,B,C,D,E,F,G,H}{
\fill (\x) circle (2pt) node[above=5pt,right] {\x};
}
\end{tikzpicture}
\end{document}
编译效果
标准Scope
Scope本意是范围、作用域的意思。在tikz里scope是平面的意思,也就是在哪个平面作画。在3d绘图纸,有3个标准平面:xy、xz和yz这三个平面。在3D绘图中,用scope语法选取一个标准平面进行绘制,我举一个例子:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{3d}
\begin{document}
\begin{tikzpicture}
\begin{scope}[canvas is zy plane at x=0]
\draw[->] (-2,0) -- (2,0) node[right] {$y$};
\draw[->] (0,-2) -- (0,2) node[above] {$z$};
\draw[thick] (0,0) circle (1.5);
\end{scope}
\begin{scope}[canvas is xz plane at y=0]
\draw[->] (-2,0) -- (2,0) node[right] {$x$};
\draw[thick] (0,0) circle (1.5);
\end{scope}
\begin{scope}[canvas is yx plane at z=0]
\draw[thick] (0,0) circle (1.5);
\end{scope}
\end{tikzpicture}
\end{document}
绘制效果如下:
scope的语法倾向于tikz的语法特点,类似自然语言。比如canvas is yx plane at z=0,这段代码就非常像自然语言。
任意平面scope
比如说要在yz平面绕y轴旋转45°后的平面上绘图,该怎么做呢?这个时候要用新的语法了。在tikz里,x和y是互相垂直的,而z轴是和xy成45°的轴。所以左边转换要注意,和我们在中学数学使用的坐标有点不一样,要转换过来。比如我就在yz平面绕y轴旋转45°后的平面上绘制一个圆,语法就是这样的:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{3d}
\begin{document}
\begin{tikzpicture}
\begin{scope}[canvas is yz plane at x=0]
\draw[->] (-2,0) -- (2,0) node[right] {$z$};
\draw[->] (0,-2) -- (0,2) node[above] {$y$};
\end{scope}
\begin{scope}[canvas is xz plane at y=0]
\draw[->] (-2,0) -- (2,0) node[right] {$x$};
\end{scope}
\begin{scope}[
plane origin={(0,0,0)},
plane x={(1,1,0)},
plane y={(0,0,1)},
canvas is plane]
\draw[thick] (0,0) circle (1.5);
\end{scope}
\end{tikzpicture}
\end{document}
平面定义的语法核心就是四句,定义平面原点,平面x和y的单位向量。
形成的效果是这样的:
因为视角的关系,这个圆显示为一条很粗的线,但是实际上是一个圆。