三维空间透视投影至二维平面

转载:三维空间透视投影至二维平面   https://blog.csdn.net/liu14lang/article/details/78117423

前言
其实这篇文章讲的就是类似于MATLAB中的mesh函数的实现原理。想要实现的功能就是已知网格三维坐标,如何将转成在某个视角下的二维坐标。说白了就是如何将三维坐标用电脑呈现出来(因为电脑平面是二维的)。比如下面这些三维坐标点。 

è¿éåå¾çæè¿°
具体步骤
主要分为三步骤: 
1、选定观察点P(默认与x轴37度,与z轴30度,与原点距离(R)足够远)

2、通过空间坐标变换,将原来的空间坐标系转换为以观察点为原点,PO为z轴的空间坐标系。

3、通过投影将三维空间坐标映射到平行于xoy平面的画布上。

步骤一
选定观察点,如下图的观察点P 

è¿éåå¾çæè¿°


步骤二
通过空间坐标变换,将原来的空间坐标系转换为以观察点为原点,PO为z轴的空间坐标系。 
我们所说的空间坐标变换就是换个参考系,比如绕X,Y,Z轴旋转。可以感受一下(此三幅图,盗取的他人的,来源已不详,若给作者造成不便,还望与我联系) 
绕X轴: 
 è¿éåå¾çæè¿°
绕Y轴: 


绕Z轴: 

è¿éåå¾çæè¿°
 
以上是直观的显示,那我们如何求得变换后的坐标呢,这不,旋转矩阵派出用场了。

空间坐标变换——旋转矩阵(维基百科) 
旋转可分为主动旋转与被动旋转。主动旋转是指将向量逆时针围绕旋转轴所做出的旋转。被动旋转是对坐标轴本身进行的逆时针旋转,它相当于主动旋转的逆操作。 

è¿éåå¾çæè¿°


所以要想实现第二步骤,则只需这两步: 

è¿éåå¾çæè¿°


步骤三
通过投影将三维空间坐标映射到平行于变换后参考系的xoy平面的画布上。 
如下两图: 

è¿éåå¾çæè¿°

 

è¿éåå¾çæè¿°
先来解释第一幅图什么意思,第一幅图的意思是那个摄像机的位置就相当于观察点位置,那两平面左边的就是画布,右边代表的是经过任何一个待映射空间点Q且平行于xoy平面的平面。类似于从摄像机位置发出一条直线指向Q,与画布有一个交点R,我们最终要求的就是这个R在画布上的坐标。 
第二幅图的意思就是如何求R在画布上的坐标,在这求x为例(求y类似)。途中绿点代表Q,图中的×代表R,我们会给定观察点与画布的距离。 
所以R坐标求解如下图所示: 

è¿éåå¾çæè¿°


大功告成!!!
 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页