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