第四章二维图形的生成课件.ppt
《第四章二维图形的生成课件.ppt》由会员分享,可在线阅读,更多相关《第四章二维图形的生成课件.ppt(75页珍藏版)》请在三一办公上搜索。
1、2023/4/3,西安工程大学计算机图形学,1,窗口视图变换,用户域和窗口区1 用户域:程序员用来定义草图的整个自然空间(WD)a人们所要描述的图形均在用户域中定义。b用户域是一个实数域,理论上是连续无限的。2窗口区:用户指定的任一区域(W)a 窗口区W小于或等于用户域WD b 小于用户域的窗口区W叫做用户域的子域。c 窗口可以有多种类型,矩形窗口、圆形窗口、多边形窗口等等 d 窗口可以嵌套,即在第一层窗口中可再定义第二层窗口,在第I层窗口中可再定义第I+1层窗口等等。,4.5.1、窗口区和视图区,2023/4/3,西安工程大学计算机图形学,2,1、屏幕域(DC):设备输出图形的最大区域,是有
2、限的整数域。如图形显示器分辨率为:1024768DC0.10230.7672、视图区:任何小于或等于屏幕域的区域 a、视图区用设备坐标定义在屏幕域中 b、窗口区显示在视图区,需做窗口区到视图区的坐标转换。c、视图区可以有多种类型:圆形、矩形、多边形等。d、视图区也可以嵌套。,窗口视图变换,4.5.1、窗口区和视图区,2023/4/3,西安工程大学计算机图形学,3,窗口区和视图区的坐标变换,视图的四条边界VXL,VXR,VYB,VYT设窗口的四条边界WXL,WXR,WYB,WYT,2023/4/3,西安工程大学计算机图形学,4,窗口区和视图区的坐标变换,设窗口的四条边界WXL,WXR,WYB,W
3、YT视图的四条边界VXL,VXR,VYB,VYT则用户坐标系下的点(即窗口内的一点)(Xw,Yw)对应屏幕视图区中的点(Xv,Yv),其变换公式为,4.5.1、窗口区和视图区,2023/4/3,西安工程大学计算机图形学,5,简化为:1)当ac时,即x 方向的变化与y方向的变化不同时,视图中的图形会有伸缩变化,图形变形。2)当a=c=1,b=d=0则Xv=Xw,Yv=Yw,图形完全相 同。思考:前面讲的窗口视图变换时,假设窗口的边和坐标轴平行,如果窗口的边不和坐标轴平行呢?,窗口区和视图区的坐标变换,4.5.1、窗口区和视图区,2023/4/3,西安工程大学计算机图形学,6,A.先让窗口FGHI
4、转-角,使它和FGHI重合。B.用(1)式进行计算。,窗口区和视图区的坐标变换,4.5.1、窗口区和视图区,2023/4/3,西安工程大学计算机图形学,7,二维图形的显示流程图,4.5.1、窗口区和视图区,2023/4/3,西安工程大学计算机图形学,8,直线段裁剪直接求交算法Cohen-Sutherland算法中点分割算法参数化裁剪算法Liang-Barskey算法,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,9,裁剪:确定图形中哪些部分落在显示区之内,哪些落在显示区之外,以便只显示落在显示区内的那部分图形。这个选择过程称为裁剪。图形裁剪算法,直接影响图形系统的效率。,
5、直线段裁剪_裁剪,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,10,图形裁剪中最基本的问题。假设窗口的左下角坐标为(xL,yB),右上角坐标为(xR,yT),对于给定点P(x,y),则P点在窗口内的条件是要满足下列不等式:xL=x=xR yB=y=yT否则,P点就在窗口外。问题:对于任意多边形窗口,如何判别?,(xL,yB),(xR,yT),直线段裁剪_点的裁剪,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,11,直线段裁剪算法是复杂图形裁剪的基础。复杂的曲线可以通过折线段来近似,从而裁剪问题也可以化为直线段的裁剪问题。,直线段裁剪,4.5.2、直
6、线段裁剪,2023/4/3,西安工程大学计算机图形学,12,直接求交算法,直线与窗口边都写成参数形式,求参数值。,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,13,裁剪线段与窗口的关系:(1)线段完全可见;(2)显然不可见;(3)其它提高裁剪效率:快速判断情形(1)(2),对于情形(3),设法减少求交次数和每次求交时所需的计算量。,直接求交算法,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,14,Cohen-Sutherland裁剪,基本思想:对于每条线段P1P2分为三种情况处理:(1)若P1P2完全在窗口内,则显示该线段P1P2。(2)若P1P2
7、明显在窗口外,则丢弃该线段。(3)若线段不满足(1)或(2)的条件,则在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。为快速判断,采用如下编码方法:,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,15,实现方法:将窗口边线两边沿长,得到九个区域,每一个区域都用一个四位二进制数标识,直线的端点都按其所处区域赋予相应的区域码,用来标识出端点相对于裁剪矩形边界的位置。,1001,0001,0101,1000,0000,0100,1010,0010,0110,Cohen-Sutherland裁剪,4.5.2、直线段裁剪,2023/4/3,西安工程大
8、学计算机图形学,16,将区域码的各位从右到左编号,则坐标区域与各位的关系为:上 下 右 左 X X X X,Cohen-Sutherland裁剪,任何位赋值为1,代表端点落在相应的位置上,否则该位为0。若端点在剪取矩形内,区域码为0000。如果端点落在矩形的左下角,则区域码为0101。,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,17,一旦给定所有的线段端点的区域码,就可以快速判断哪条直线完全在剪取窗口内,哪条直线完全在窗口外。所以得到一个规律:,Cohen-Sutherland裁剪,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,18,若P1P2完
9、全在窗口内code1=0,且code2=0,则“取”若P1P2明显在窗口外code1&code20,则“弃”在交点处把线段分为两段。其中一段完全在窗口外,可弃之。然后对另一段重复上述处理。,Cohen-Sutherland裁剪,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,19,如何判定应该与窗口的哪条边求交呢?与编码中对应位为1的边求交。计算线段P1(x1,y1)P2(x2,y2)与窗口边界的交点if(LEFT,Cohen-Sutherland裁剪,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,20,Cohen-Sutherland直线裁剪算法小结
10、,本算法的优点在于简单,易于实现。他可以简单的描述为将直线在窗口左边的部分删去,按左,右,下,上的顺序依次进行,处理之后,剩余部分就是可见的了。在这个算法中求交点是很重要的,他决定了算法的速度。另外,本算法对于其他形状的窗口未必同样有效。特点:用编码方法可快速判断线段的完全可见和显然不可见。,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,21,中点分割裁剪算法,基本思想:从P0点出发找出离P0最近的可见点,和从P1点出发找出离P1最近的可见点。这两个可见点的连线就是原线段的可见部分。与Cohen-Sutherland算法一样首先对线段端点进行编码,并把线段与窗口的关系分为
11、三种情况,对前两种情况,进行一样的处理;对于第三种情况,用中点分割的方法求出线段与窗口的交点。A、B分别为距P0、P1最近的可见点,Pm为P0P1中点。,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,22,中点分割算法-求线段与窗口的交点,从P1出发找距离P1最近可见点采用上面类似方法。,从P0出发找距离P0最近可见点采用中点分割方法,先求出P0P1的中点Pm.,若P0Pm不是显然不可见的,并且P0P1在窗口中有可见部分,则距P0最近的可见点一定落在P0Pm上,所以用P0Pm代替P0P1,否则用PmP1代替P0P1.,再对新的P0P1求中点Pm。重复上述过程,直到PmP1
12、长度小于给定的控制常数为止,此时Pm收敛于交点。,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,23,中点分割裁剪算法,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,24,对分辩率为2N*2N的显示器,上述二分过程至多进行N次。主要过程只用到加法和除法运算,适合硬件实现,它可以用左右移位来代替乘除法,这样就大大加快了速度。,中点分割裁剪算法,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,25,梁友栋-Barsky算法,设要裁剪的线段是P0P1。P0P1和窗口边界交于A,B,C,D四点,见图。算法的基本思想是从A,B和P0三点中找
13、出最靠近P1的可见点,图中要找的点是P0。从C,D和P1中找出最靠近P0的可见点。图中要找的点是C点。那么P0C就是P0P1线段上的可见部分。,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,26,梁友栋-Barsky算法,线段的端点为(x0,y0),(x1,y1),参数表示式为:x=x0+t(x1-x0)=x0+tx y=y0+t(y1-y0)=y0+ty 0=t=1,如果直线在窗口内,则有:XL=x0+tx=Xr Yb=y0+ty=Yt 求解以上的四个不等式得:,Pk*t=Qk k=1,2,3,4,P1=-x Q1=x0-XL P2=x Q2=Xr-x0,P3=-y Q
14、3=y0-Yb P4=y Q4=Yt-y0,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,27,计算交点B对应的参数值:,XL=x0+tx 得:,同样的方法可得交点A C D对应的参数值:,P0对应的参数值为0,P1对应的参数值为1.,所以,距离 P1 最近的可见点的参数值为t1maxtA tB 0,距离 P0 最近的可见点的参数值为t2 mintC tD 1,若t1t2则可见线段区间为:t1 t2,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,28,一般我们利用 Pi Qi 求出了参数ti,怎么确定那些取ti最大,那些ti取最小。由上面的解答看规律
15、:,Pi 0 所求参数 ti 应取minPi=0 Qi 0 时,分析另一Q,4.5.2、直线段裁剪,例如:P1=0 即x=0,说明为垂直线 若Q10,而Q20,也在窗口外,如CD,2023/4/3,西安工程大学计算机图形学,29,L-B裁剪算法描述,1、计算 Pk Qk k=1、2、3、4,2、判断是否有Pk=0,若有判断对应的 Qk。,3、对Pk0的情况,用Qk/Pk计算交点对应的t值。,4、对每条线计算的参数t值。t1=maxQk/Pk&Pk0,1,5、如果t1t2,则直线在窗口外,否则计算交点坐标。,4.5.2、直线段裁剪,梁友栋-Barsky算法,2023/4/3,西安工程大学计算机图
16、形学,30,参数化算法(Cyrus-Beck),考虑凸多边形区域G和直线段P1P2P(t)=(P2-P1)*t+P1 设A是区域G的边界上一点,N是区域边界在A点的内法线向量,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,31,参数化算法(Cyrus-Beck),对于线段P1P2上任一点P(t)与边有如下关系,若N(P(t)A)0,则P(t)点在直线外侧,若N(P(t)A)0,则P(t)点在直线内侧,若N(P(t)A)=0,则P(t)点在边界或边界的延长线上,凸多边形的性质:点P(t)在凸多边形内的充要条件是,对于凸多边形边界上任意一点A和该点处内法向N,都有N(P(t)
17、-A)0,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,32,参数化算法(Cyrus-Beck),对于有m条边的多边形,由上述方法可得可见线段参数区间的解:Ni(P(t)-Ai)=0 i=1,2,m 0=0,解上面不等式得到:,当Ni(P2-P1)0时,解得:,当Ni(P2-P1)0时,解得:,4.5.2、直线段裁剪,2023/4/3,西安工程大学计算机图形学,33,当Ni(P2-P1)=0时,得:,即线段平行于Ni所对应的边。此时再判断Ni(P1-Ai)符号,若Ni(P1-Ai)0,则P1P2在多边形外部,不可见,若Ni(P1-Ai)0,则P1P2在多边形内部,继续其它
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 二维 图形 生成 课件
链接地址:https://www.31ppt.com/p-4091941.html