计算机图形学 - 第六章讲义

上传人:wm****3 文档编号:51732377 上传时间:2018-08-16 格式:PPT 页数:53 大小:891.50KB
返回 下载 相关 举报
计算机图形学 - 第六章讲义_第1页
第1页 / 共53页
计算机图形学 - 第六章讲义_第2页
第2页 / 共53页
计算机图形学 - 第六章讲义_第3页
第3页 / 共53页
计算机图形学 - 第六章讲义_第4页
第4页 / 共53页
计算机图形学 - 第六章讲义_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《计算机图形学 - 第六章讲义》由会员分享,可在线阅读,更多相关《计算机图形学 - 第六章讲义(53页珍藏版)》请在金锄头文库上搜索。

1、第六章 二维观察本章重点讲解内容:2D 观察变换2D 裁剪操作2D 观察l一个图形软件包都允许指定一个图形中要显示的 部分以及在显示器显示的位置l任何用做世界坐标参考系的笛卡儿坐标系都可以 用来定义图形l二维图形的视图通过指定整个图形区域中的一个 子区域来获得l可以仅显示一个区域,也可以同时显示几个区域 ,或者显示一个场景中的动态扫描序列1. 世界坐标系(World Coordinates)用户处理自己的图形时所采用的坐标系,坐标的大小和尺寸由用户确定。 2. 设备坐标系(Device Coordinates)与一个图形设备相关的坐标系叫设备坐标系。如显示器或打印机有它们自己的坐标系。 3.

2、规格化坐标系(Normal Device Coordinates)它是独立于具体物理设备的一种坐标系,具有显示空间在X和Y方向上都是从0到1坐标系lDC与NC之间的关系对每一个物理设备而言,DC与NC仅仅是坐标值相差一个比例因子NC可以看成是一个抽象的图形设备,要输出到具体的设备时,只需乘上一个 比例因子即可6.1 2D 观察变换l考察一个图形时,往往采用两种模型:物理模型:是用户在WC中描述的逻辑模型:是在显示器上呈现的物体的图形 ,它是在设备坐标系中描述的。l图形太大和复杂,只能显示局部内容,为 使用户能清晰地观察其细节部分l用户感兴趣区域6.1 2D 观察变换设备坐标系xyv1v2v3v

3、4视口xyw1w2w3w4窗口世界坐标系6.1.1 窗口和视口l窗口: 常规图形系统中,世界坐标系中 指定的用于显示的坐标区域。l视口: 显示设备上用于窗口映射的坐标 区域,也叫视区。l观察变换:世界坐标系中部分场景映射到 设备坐标系的过程称为观察变换,也叫视 像变换,或称为从窗口到视口的变换。 6.1.2 2D 的观察流程WC将世界坐标转 换为观察坐标使用建模坐标变换 构造世界坐标场景使用窗口视区描述 将观察坐标映射到规 范化观察坐标将规范化视口 映射到设备坐标MCVCNVCDC世界坐标 观察坐标的变换观察参考坐标系为世界坐标系窗口提供 参考系在世界坐标系中选择某个位置作为观察参 考坐标系的

4、原点P0 = (x0, y0)建立观察参考坐标系的坐标轴的方向,将 一个世界坐标系的矢量V作为观察坐标系 yv轴方向,矢量V为观察向量 给定V,就可分别计算在观察坐标轴yv和xv 上的单位向量v = (vx, vy)和u = (ux, uy) l从观察坐标系变换到世界坐标系的矩阵由 两个变换合成:1. 将观察坐标原点移动到与世界坐标系原点重合2. 绕原点旋转使两个坐标系重合。l则组合变换矩阵:Mwc,vc=RT T:平移 R:单位向量V,U分别构成R的第一二行世界坐标 观察坐标的变换M = RTx0y0X世界y世界X观察Y观察TR窗口到视口的坐标变换xyw1w2w3w4窗口(xw,yw)xyv

5、1v2v3v4视口(xv,yv)保持视口与窗口中的对象具有同样的相 对位置,必须满足(Xw-W1) / (W2-W1) = (Xv-V1) / (V2-V1)(Yw-W3) / (W4-W3) = (Yv-V3) / (V4-V3)窗口到视口的坐标变换Xv = SxXw + txYv = SyYw + ty缩放系数 Sx = (V2-V1) / (W2-W1)Sy = (V4-V3) / (W4-W3)平移参数tx = (W2*V1-W1*V2) / (W2-W1)ty = (W4*V3-W3*V4) / (W4-W3)窗口到视口的坐标变换l已知w1=10, w2=20, w3=40, w4=

6、80, v1=80, v2=110, v3=10, v4=130, 窗口中一点P(15,60),求视口中的映射点Pl解:(15-10) / (20-10) = (xv-80) / (110-80)(60-40) / (80-40) = (yv-10) / (130-10)xv = 95, yv = 70P(95,70)例:窗口到视口的坐标变换6.5 2D裁剪操作l定义:识别图形在指定区域内、外的图形部分 的过程l应用包括:从定义的场景中取出用于观察的部分;在三维图形中标识出可见面;防止线段或对象的边界混淆;用实体造型来创建对象;显示多窗口的环境;允许进行拷贝、移动或删除等绘图操作6.5 2D裁

7、剪操作l裁剪窗口:用来裁剪对象的区域。l裁剪时机针对窗口裁剪:只有窗口内的部分映射 到设备坐标系中,不用将多余图元变换到 设备空间中针对视口裁剪:映射后,用视口边界裁 剪,可通过合并观察和几何变换矩阵来减 少计算量l裁剪类型点裁剪直线裁剪多边形裁剪曲线裁剪文字裁剪6.5 2D 裁剪操作6.6 点的裁剪 l假设裁剪窗口是在标准位置的矩形窗口l点P(x, y)如果满足下列不等式,则保留:w1xw2, w3yw4l否则,P点就在窗口外,被裁剪w1w2w3w4(x, y)6.7 线段的裁剪 P1P2P3P4P5P6P7P8P9P10裁剪前P3P4P5P6P7P8裁剪后l线段与窗口的位置关系:整个线段全

8、在窗口内整个线段全在窗口外线段部分在窗口外,部分在窗口内6.7 线段的裁剪通过对线段端点进行“内-外部”测试来处理线段当线段的两个端点全在窗口内时,该直线整个 在窗口内当线段的两个端点,一个在窗口内,一个在窗 口外时,该直线部分在窗口内,部分在窗口外当线段的两个端点全在窗口外时,该直线可能 整个在窗口外;也可能部分在窗口内,部分在 窗口外线段的裁剪lCohen-Sutherland直线裁剪(CS算法)lLiang-Barsky 直线裁剪(LB算法)lNicholl-Lee-Nicholl 直线裁剪(NLN算法)l非矩形裁剪窗口线段的裁剪6.7.1 Cohen-Sutherland 线段裁剪 l

9、思想:线段由端点标识;测试线段端点和窗口边界的关系以确定是否需要 计算交点 u线段两个端点全在窗口内时,线段整个在窗 口内u线段的两个端点,分别在窗口内和窗口外时 ,该线段部分在窗口内,部分在窗口外u线段的两个端点全在窗口外时该线段可能整个在窗口外也可能部分在窗口内,部分在窗口外l扩展窗口的边界将整个2D平面划分为9个区域l每个区域赋予一个4位编码(区域码)b3b2b1b0000001100100010100100001100110001010上 下 右 左w1w2w3w4CS算法 编码方案=计算直线端点区域编码: c1 和 c2;=判断c1 和 c2 均为0000,保留直线c1 & c2 不

10、为零,同在某边界外,删除该直线c1 & c2 为零,需要进一步求解交点CS 算法描述=求解交点以左、右、下、上为序,找出端点区 域码中第一位为1的位将窗口边界方程x=w1或x=w2或y=w3 或y=w4代入直线方程,计算直线与窗口边界的交点将交点和另一端点形成新的直线,重 复上述过程,直至线段保留或删除CS 算法描述000001100100010100100001100110001010(3) 计算交点PP1P2CS线段裁剪算法 举例C2 = 1000C1 = 0101(2) 求与 C1 & C2 = 0000(1) 标识端点的区域码C1 、C2P(4) 求点区域码PC = 1000(5) 求

11、与 C & C2 不为零C = 1000(6) 线段被裁剪132CS线段裁剪算法 举例P1P2000001100100010100100001100110001010l优点:简单,易于实现。l算法中求交点的次数决定了算法的速度。CS线段裁剪算法小结:CS线段裁剪算法 作业l已知线段的两个端点P1(-3/2, 1/6),P2(1/2, 3/2)窗口边界x = -1, x = 1, y = -1, y = 1l用CS算法对线段进行裁剪6.7.2 Liang-Barsky 线段裁剪算法l思想:基于直线段参数方程分析的快速直 线裁剪算法l参数方程直线两端点 P1(x1, y1), P2 (x2, y2

12、)x = x1 + (x2 - x1)uy = y1 + (y2 - y1)u, 0u16.7.2 Liang-Barsky 线段裁剪算法l已知直线端点 :起点P1(x1, y1),终点P2(x2, y2)l参数方程:x = x1 + (x2 - x1)uy = y1 + (y2 - y1)u P1P2u1lLB算法推导如果直线在窗口内, 则w1 x1 + dx * u w2w3 y1 + dy * u w4统一表示为:Pk * u Qk k = 1, 2, 3, 4P1 = - dx, Q1 = x1-w1 P2 = dx, Q2 = w2-x1P3 = - dy, Q3 = y1-w3 P

13、4 = dy, Q4 = w4-y16.7.2 Liang-Barsky 线段裁剪算法LB算法描述l计算 Pk, Qk, k = 1 4l判断Pk = 0,表示直线平行于窗口某边界uQk = 0,直线在窗口内,平行边界内Pk != 0, 用Qk / Pk计算交点所对应的U值6.7.2 LB线段裁剪算法计算方法对每条线计算参数u1和u2u1 = Max 0, Qk / Pk , Pk 0如果u1 u2, 则直线在窗口外,否则计算交点坐标6.7.2 Liang-Barsky 线段裁剪算法LB线段裁剪算法 举例l已知线段的两个端点P1(3, 4),P2(8, 2)窗口边界x=1, x=4, y=1,

14、 y=3l用LB算法对线段进行裁剪LB线段裁剪算法 举例1: 已知:线段的两个端点(3, 4),(8, 2)窗口边界x=1, x=4, y=1, y=3l线段的参数方程 x = 3 + 5uy = 4 - 2ulP1 = -5, Q1 = 2, R1 = -2/5 P2 = 5, Q2 = 1, R2 = 1/5 P3 = 2, Q3 = 3, R3 = 3/2 P4 = -2, Q4 = -1, R4 = 1/2lu1 = max(0, -2/5, 1/2) = 1/2 u2 = min(1, 1/5, 3/2) = 1/5lu1 u2 所以线段全部被裁剪例2线段的两个端点(-2,-1)和(

15、1,1.5)窗口边界x1 = -1, x2 = 1, y1 = -1, y2 = 1例2x = 3, y = 2.5 p1 = -3q1 = -1 r1 = 1/3 p2 = 3q2 = 3r2 = 1 p3 = -2.5q3 = 0r3 = 0 p4 = 2.5q4 = 2r1 = 4/5 对于p 0,u2 = min1,1, 4/5 = 4/5 则u1u2,则可见线段的端点坐标: x = x1 + u1 x = -1, y = y1 + u1 y = -1/6即(-1, -1/6)x=x1+u2 x=2/5, y=y1+u2 y =1即(2/5, 1)lLB与CS的比较LB 效率高于 CS

16、:计算交点数目减少lLiang-Barsky和Cohen-Sutherland算法很容易扩展为三维裁剪算法6.7.2 Liang-Barsky 线段裁剪算法LB线段裁剪算法 作业l已知线段的两个端点P1(-1, 3),P2(1, 1)窗口边界x=0, x=2, y=0, y=2l用LB算法对线段进行裁剪l思想通过在裁剪窗口周围创立多个区域,从而避免对直线段进行多次裁剪。l适用范围仅仅适用于2D裁剪6.7.3 Nicholl-Lee-Nicholl直线裁剪l算法步骤从P1点向窗口的四个顶角点发出射线这四条射线和窗口的四条边所在的直 线一起将二维平面划分为更多的小区 域 6.7.3 Nicholl-Lee-Nicholl直线裁剪6.7.3 Nicholl-Lee-Nicholl直线裁剪P1P1P1线段

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号