欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

玩转三维图形:变换与投影的奥秘 - 重要原理与核心算法解析

最编程 2024-02-16 09:43:53
...

      1.  三维变换齐次坐标矩阵:

      

      2. 全比例变换:

     

     3.  缩放变换:

         变换矩阵主对角线上的元素a,e,j,s的作用是图形产生比例变幻。

      

      若a= e=j,则图形三方向的缩放比例相同;若a≠ e≠j,则图形产生畸变。

     4. 平移变换:

      

     5.旋转变换:

       1)绕X轴旋转θ角

       X坐标不变,Y,Z坐标发生变换。

         

      2)绕Y轴旋转θ角

Y坐标不变,X,Z坐标发生变换。

       

     3)绕Y轴旋转θ角

Z坐标不变,X,Y坐标发生变换。

     

  6. 三维裁剪:

  

   1)Sutherland-Cohen算法中的编码应为六位。括号中的条件适用于透视的情况,平行投影时用括号外的条件。

      点在视域上面,第一位为1,y>1, (y>z)

      点在视域下面,第二位为1,y<0, (y<-z)

      点在视域右面,第三位为1,x>1, (x>z)

      点在视域左面,第四位为1,x<0, (x<-z)

      点在视域后面,第五位为1,z>1, (z>1)

      点在视域前面,第六位为1,z<0, (z<zmin)

   设线段的起点和终点分别为P0(x0,y0,z0)和P1(x1,y1,z1),直线方程可表示成参数形式

       x = x0 + (x1-x0)t,  

       y= y0 + (x1-x0)t, 

       x= x0 + (x1-x0)t     (4.39)

    和视域的边界面,例如y=1求交时,可由

      1=(y1 - y0)t’ + y0,       t’=(1-y0)/(y1-y0)

    求得交点的参数t’,再把t’代入(4.39),即可得交点的坐标。求P0P1和平面x=z的交点时,可把(4.39)代入x=z中求得交点处的参数

      –       t’=(z0-x0)/[(x1-x0)-(z1-z0)]   (4.40)

     把t’代入式(4.39)即可得到交点的坐标。

    2)三维图形的显示流程图

     采用二维裁剪的三维图形显示流程图

    

     在投影之前裁剪的理由:

     三维物体的表面通常被离散表示成多边形或折线,而对这类简单图元,三维裁剪同样比较简单。

     三维图形在显示过程中需要被消隐,做这个工作要有图形的深度信息,所以必须在投影之前完成 。 消隐很费时,如果在此之前裁剪(或部分裁剪)掉不可见的图形,可使需要消隐的图形减至最小。