第6章 二维观察.ppt
《第6章 二维观察.ppt》由会员分享,可在线阅读,更多相关《第6章 二维观察.ppt(91页珍藏版)》请在麦多课文档分享上搜索。
1、第6章 二维观察,2D 观察变换2D 剪裁操作,x,y,w1,w2,w3,w4,窗口,6.1 2D 观察变换,世界坐标系,设备坐标系,6.1.1 窗口 & 视口,窗口的定义: 常规图形系统中,世界坐标系中指定的用于显示的坐标区域。 视口的定义: 显示设备上用于窗口映射的坐标区域,也叫视区。 观察变换: 通常, 世界坐标系中部分场景映射到设备坐标系的过程称为观察变换,也叫视像变换,或称为从窗口到视口的变换。,窗口的另一种定义:窗口管理系统中,任何可移动(move about)、改变大小(resized)、激活(active)或变为无效(inactive)的屏幕上的矩形区域。,6.1.2 2D 的
2、观察流程,世界坐标 观察坐标的变换,x0,y0,X世界,y世界,X观察,Y观察,世界坐标 观察坐标的变换,M = R.T,窗口到视口的坐标变换,(Xw-W1)/(W2-W1) = (Xv-V1)/(V2-V1)(Yw-W3)/(W4-W3) = (Yv-V3)/(V4-V3) Xv = AX+BYv = CY+DA = (V2-V1)/(W2-W1)B = (W2*V1-W1*V2)/(W2-W1)C = (V4-V3)/(W4-W3)D = (W4*V3-W3*V4)/(W4-W3),窗口到视口的坐标变换,窗口到视口的坐标变换,变换矩阵:A 0 B0 C D0 0 1,已知w1=10,w2=
3、20,w3=40,w4=80, v1=80,v2=110,v3=10,v4=130, 窗口中一点P(15,60),求视口中的映射点P 解:(15-10)/(20-10) = (xv-80)/(110-80)(60-40)/(80-40) = (yv-10)/(130-10)xv = 95, yv=70P(95,70),例:窗口到视口的坐标变换,窗口与视口的位似性,定义:如果窗口的底与高之比等于视区的底与高之比,则称窗口与视区是位似的。(w2-w1)/(w4-w3)=(v2-v1)/(v4-v3)此时图形从窗口变换到视口不畸变。,窗口与视口的位似性,在坐标分别为wx1=-2.5,wx2=2.5,
4、wy1=-2.5,wy2=2.5的窗口中显示一个圆,把它映射到视口中,下面哪些视口中图形不发生畸变。 视口坐标 vx1 vx2 vy1 vy21 10 60 50 1202 80 110 10 403 85 105 50 1004 10 60 15 35,6.5 2D剪裁操作,剪裁的定义识别图形在指定区域内或区域外的图形部分的过程 剪裁窗口:用来剪裁对象的区域。 剪裁时机 针对窗口剪裁 针对视口剪裁,剪裁类型 点剪裁 直线剪裁 多边形剪裁 曲线剪裁 文本剪裁 空白剪裁,6.5 2D剪裁操作,6.6 点的剪裁,任何图形都可能包含点、直线、字符、和多边形乃至直线, 但它们都可以分解成点的集合。 点
5、的剪裁是图形剪裁中最基本的问题。,6.6 点的剪裁,假设剪裁窗口是在标准位置的矩形窗口 点P(x,y)如果满足下列不等式则保留:w1xw2, w3yw4 否则,P点就在窗口外,被剪裁,w1,w2,w3,w4,(x,y),6.7 线段的剪裁,线段与窗口的位置关系: 整个线段全在窗口内; 整个线段全在窗口外; 线段部分在窗口外,部分在窗口内。,6.7 线段的剪裁,当线段的两个端点全在窗口内时,该直线整个在窗口内 当线段的两个端点,一个在窗口内,一个在窗口外时,该直线部分在窗口内,部分在窗口外 当线段的两个端点全在窗口外时,该直线可能整个在窗口外;也可能部分在窗口内,部分在窗口外,线段的剪裁,Coh
6、en-Sutherland直线剪裁(CS算法) Liang-Barsky 直线剪裁(LB算法) Nicholl-Lee-Nicholl 直线剪裁(NLN算法) 非矩形剪裁窗口,线段的剪裁,6.7.1 Cohen-Sutherland 线段剪裁,思想: 线段由端点标识; 测试线段端点和窗口边界的关系以确定是否需要计算交点 当线段的两个端点全在窗口内时,该线段整个在窗口内 当线段的两个端点,一个在窗口内,一个在窗口外时,该线段部分在窗口内,部分在窗口外 当线段的两个端点全在窗口外时,该线段可能整个在窗口外,也可能部分在窗口内,部分在窗口外,扩展窗口的边界将整个2D平面划分为9个区域 每个区域赋予一
7、个4位编码, 称为区域码b3b2b1b0,CS算法 编码方案,编码规则:b3b2 b1 b0 b0 = 1 if x w2 b2 = 1 if y w4,0000,0110,0100,0101,0010,0001,1001,1000,1010,w1,w2,w3,w4,6.7.1 Cohen-Sutherland 线段剪裁,计算直线端点区域编码: c1 和 c2; 判断 c1 和 c2 均为0000,保留直线 c1 & c2 不为零,同在某一边界外,删除该直线 c1 & c2 为零,需要进一步求解交点 以左、右、下、上为序,找出端点区域码中第一位为1的位,将窗口边界方程x=w1/w2或y=w3/
8、w4带入直线方程,计算直线与窗口边界的交点,将交点和另一端点形成新的直线,重复上述过程,直至线段保留或删除,CS 算法描述,程序流程图 程序实现(P178) 例,6.7.1 Cohen-Sutherland 线段剪裁,P3,P4,CS线段剪裁算法 举例,0000,0110,0100,0101,0010,0001,1001,1000,1010,CS线段剪裁算法 举例,优点:简单,易于实现。它可以简单的描述为将直线在窗口外边的部分删去,按左,右,下,上的顺序依次进行,处理之后,剩余部分就是可见的了。此算法中求交点是很重要的,决定了算法的速度。,CS线段剪裁算法小结:,CS线段剪裁算法 作业,已知线
9、段的两个端点P1(-3/2,1/6),P2(1/2,3/2)窗口边界x=-1,x=1,y=-1,y=1 用CS算法对线段进行剪裁,思想:以线段的中点作为线段的分割点分别寻找直线段两个端点各自对应的最远的可见点,线段的中点剪裁算法,步骤:在求线段与边界的交点时采用折半查找技术(与CS算法不同),其余步骤同CS 特点:中点分割剪裁是对于硬件很适合的,它可以用移位来代替除法,大大加快了速度。,线段的中点剪裁算法,1,3,2,线段的中点剪裁算法,P1,P2,0000,0110,0100,0101,0010,0001,1001,1000,1010,3,4,6.7.2 Liang-Barsky 线段剪裁算
10、法,思想: 基于直线段参数方程分析的快速直线剪裁算法 参数方程直线两端点 P1(x1,y1),P2 (x2,y2)x=x1+(x2x1)uy=y1+(y2y1)u, 0 u 1,6.7.2 Liang-Barsky 线段剪裁算法,已知直线端点 :起点P1(x1,y1),终点P2 (x2,y2) 参数方程:x=x1+(x2x1)uy=y1+(y2y1)u其中: 0u1,LB算法推导如果直线在窗口内, 则w1x1+dx*uw2w3y1+dy*uw4Pk*uQk k=1,2,3,4 P1= - dx, Q1=x1-w1 P2= dx, Q2=w2-x1 P3= - dy, Q3=y1-w3 P4=
11、dy, Q4=w4-y1,6.7.2 Liang-Barsky 线段剪裁算法,LB算法描述 计算 Pk, Qk, k=14 判断是否存在Pk=0, 如果存在,进一步判断QkPk=0,表示直线平行于窗口某边界if Qk0,直线在窗口外,被剪裁else 直线在窗口内 对 Pk!=0的情形, 用Qk/Pk计算交点所对应的U值,6.7.2 LB线段剪裁算法,对每条线计算参数u1&u2u1=Max0, Qk/Pk, Pk 0 如果u1 u2, 则直线在窗口外,否则计算交点坐标,6.7.2 Liang-Barsky 线段剪裁算法,LB线段剪裁算法 举例,已知线段的两个端点P1(3,4),P2(8,2)窗口
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二维 观察 PPT
