用斜二测画法画直观图,本质上就是把三维空间中图形的每个点投影到一个二维平面上(其实还需要先把 y 坐标除以 2, 但这不是重点)。投影之后坐标降到了二维,这样才有可能在二维的纸面上把点每个点画出来,从而把整个图形画出来。
(斜二测画法,边长 200px 的立方体)
当年学向量的时候推导了一些变换公式(当时还不知道矩阵乘法),顺便研究了一下怎么样通过计算画直观图而不是凭感觉。乱搞了一通蒙出一组式子来,基本上可以确定是对的:
\(\left\{\begin{matrix}
x‘ = x+\frac{\sqrt{2}}{4}y \\
y‘ = z+\frac{\sqrt{2}}{4}y
\end{matrix}\right.\)
(x, y, z) 表示空间中点的坐标,(x‘, y‘) 表示投影后纸面上一个 x 轴向右,y 轴(对应空间中的 z 轴)向上的坐标系中点的坐标。在这个坐标系中,可以画出 y = x 这条直线来表示空间中的 y 轴(图中 z 轴)。注意这个 y 轴是指向右上方的,也就是说这是一个左手系(其实左手系跟右手系在坐标运算上几乎没什么差别,只是向量叉积公式不一样而已):
(左手系和右手系,图片来自网络)
上述式子只适用于左手系,但是稍加改造应该就能得到只适用于右手系的另一组式子。不过我懒得再推(试)了。
写成变换矩阵的形式:
\(\begin{bmatrix}
x‘\\
y‘\\
z‘
\end{bmatrix}=\begin{bmatrix}
1 & \frac{\sqrt{2}}{4} & 0 \\
0 & \frac{\sqrt{2}}{4} & 1 \\
0 & 0 & 0
\end{bmatrix}\begin{bmatrix}
x\\
y\\
z
\end{bmatrix}\)
时间: 2024-10-31 12:13:19