chapter2 图形系统 2.2变换

说明:本书中遵循的一些书写习惯为列向量,左乘,逆时针旋转为正方向(符合右手定则)。

变换分为线性变换,仿射变换和投影变换。这三种变换表达式不同,但都可以形如Y=MX的式子表达,其中Y,X是齐次坐标,M4齐次方阵。

一,线性变换

符合线性规则的变换就叫线性变换。已知变换Y=L(X),L(cU+V)=cL(U)+L(V),则称变换Y=L(X)为线性变换。

线性变换的矩阵表达形式为Y=MX,显然,M(cU+V=cMU+cV,符合线性规则。

常见的线性变换有旋转(绕原点),对映,缩放和切变。

1.旋转。

二维空间中旋转矩阵R==

其中,I=     S=

三维空间中绕z轴的旋转矩阵R==

y轴的旋转矩阵为R==

x轴的旋转矩阵为R==

对于任意轴的方向向量N,其坐标为S=

旋转矩阵R=

其中

2..对映

由上图可知,   ,  c=

两式相减并代入c得,

所以,对于平面法向量N=

对映矩阵R=

注:对角元素中的n1n2也是平方!!!!!)

3.缩放

书中介绍了两种求缩放矩阵的思路,这里只写出比较直观易懂的方法。

思路如下,先将待变换的向量变换到D,U,RD,U,R为缩放的三个方向)组成的坐标系下,然后对每一个坐标分别乘以相应的缩放系数即可。

假设对应于D,U,R三个方向的缩放系数分别为,则缩放矩阵为

S=

4.切变

由于切变很少用到,这里不做讲述,详见2728页。

二,仿射变换

仿射变换可用形如Y=MX+B的式子表示。

其中,M代表某个线性变换,B代表平移量。它表示先对向量进行线性变换,再进行平移变换。

常见的形式有两种,平移和绕非原点的点旋转。

三,投影变换

分为正交投影,斜投影和透视投影。

其中,正交投影和斜投影属于仿射变换,透视投影既不是线性变换,也不是仿射变换。

它相当于先进行一次仿射变换,再除以一个与待投影向量本身有关的量(此除法称为prospective divide)。

1.点到线的正交投影

其中,X为待投影点,Y为投影点,D为直线的方向向量,P为直线上一点。

由上图可知,

上式代入下式,得

=MX+B

其中,M=,    B=

2.点到面的正交投影。

 

其中,X为待投影点,Y为投影点,P为平面内一点,N为平面的法向量。

由上图可知,

下式代入上式,得

=MX+B

其中,M=,     B=

3.点到面的斜投影。

如上图,P为平面内一点,N为平面法向量,X为待投影点,Y为投影点,D为直线的方向向量。

由上图可得,

下式代入上式可得,

其中,

4.点到面的透视投影。

如上图所示,E为视点,X为待投影点,Y为投影后的点,P为平面内一点,N为平面法向量。

  透视投影与平行投影(正交投影和斜投影)的区别是平行投影的投影光线全部是平行的,而透视投影的投影光线则来源于一个共同的点,该点即为视点。

由上图可得,

其中,t>0

4.透视投影的一种特殊情况下的简化版本。

  上述的透视投影中的点是基于笛卡尔坐标系的,具有普遍性,它适用于任意的视点和任意的投影面。

  在渲染管线当中,有一种特殊情况,即点的坐标基于坐标系统{E;D,U,R}。其中,E为透视点即视点。投影面的法向量与视线方向相反,即 。此时,对于任意点,其基座标为(dur)。并且现在,我们寻找这样一个点,它在投影面上,并且到视点E的距离最短(设此距离为)。显然,这个点就是视点E到投影面的正交投影。通过几何关系,我们可以得到:

                           

将以上四个共识代入一般情况下的投影方程,可得

                          

也就是说点被投影到了点

更进一步,通常情况下,,因此上式可进一步简化为我们发现所有点在投影后第一个坐标恒为1,这是必然的。

5.透视投影的一条重要性质:变换的非线性性质。

我们可以发现,从所有的线性变换和仿射变换一直到投影中的平行投影,其变换方程均为线性方程,而唯独透视投影的变换方程为非线性方程,这说明,在进行透视投影之后,原来分布均匀的一条直线上的点,变成了分布不均匀的直上一串点,这在光栅化的过程中会引起失真,解决方法是用某个参数进行校正,参数的求法此处略,详见P36---P39

四,将所有的变换用同一种形式——齐次矩阵来表示。

1.线性变换。

其中,3阶方阵,3维列向量。

2.仿射变换

其中,为平移向量。

3.透视投影(正交投影和斜投影都是仿射变换)

说明:

  对于透视投影以外的其他变换,左乘矩阵一步即可完成。

而对于透视投影,左乘矩阵这一步并没有进行真正的投影变换,它仅仅是为透视除法准备w,透视除法完成后,才算是完成了投影变换。

  另外,这些矩阵在实际的渲染过程中并不是单独出现的,而是以连接矩阵的形式出现,并且,透视矩阵并不是最后的矩阵,还要进一步转变为裁减矩阵。

猜你喜欢

转载自blog.csdn.net/huazai434/article/details/5747224