用斜二测画法画直观图,本质上就是把三维空间中图形的每个点投影到一个二维平面上(其实还需要先把 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}\)

版权声明:本文为li-hua原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/li-hua/p/4475157.html