玩转三维图形:变换与投影的奥秘 - 重要原理与核心算法解析
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)三维图形的显示流程图
采用二维裁剪的三维图形显示流程图
在投影之前裁剪的理由:
三维物体的表面通常被离散表示成多边形或折线,而对这类简单图元,三维裁剪同样比较简单。
三维图形在显示过程中需要被消隐,做这个工作要有图形的深度信息,所以必须在投影之前完成 。 消隐很费时,如果在此之前裁剪(或部分裁剪)掉不可见的图形,可使需要消隐的图形减至最小。