cg_chapter6_notes概要

上传人:今*** 文档编号:107180680 上传时间:2019-10-18 格式:PPT 页数:82 大小:783.50KB
返回 下载 相关 举报
cg_chapter6_notes概要_第1页
第1页 / 共82页
cg_chapter6_notes概要_第2页
第2页 / 共82页
cg_chapter6_notes概要_第3页
第3页 / 共82页
cg_chapter6_notes概要_第4页
第4页 / 共82页
cg_chapter6_notes概要_第5页
第5页 / 共82页
点击查看更多>>
资源描述

《cg_chapter6_notes概要》由会员分享,可在线阅读,更多相关《cg_chapter6_notes概要(82页珍藏版)》请在金锄头文库上搜索。

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

2、3. 规格化坐标系(Normal Device Coordinates) 它是独立于具体物理设备的一种坐标系,具有显示空间在X和Y方向上都是从0到1,坐标系,DC与NC之间的关系 对每一个物理设备而言,DC与NC仅仅是坐标值相差一个比例因子 NC可以看成是一个抽象的图形设备,要输出到具体的设备时,只需乘上一个比例因子即可,6.1 2D 观察变换,6.1.1 窗口 & 视口,窗口: 常规图形系统中,世界坐标系中指定的用于显示的坐标区域。 视口: 显示设备上用于窗口映射的坐标区域,也叫视区。 观察变换:世界坐标系中部分场景映射到设备坐标系的过程称为观察变换,也叫视图变换,或称为从窗口到视口的变换。

3、,6.1 2D 观察变换,考察一个图形时,往往采用两种模型: 物理模型:是用户在WC中描述的 逻辑模型:是在显示器上呈现的物体的图形,它是在设备坐标系中描述的。 图形太大和复杂,只能显示局部内容,为使用户能清晰地观察其细节部分 用户感兴趣区域,任意窗口引入观察坐标系,6.1.2 2D 的观察流程,WC,将世界坐标转 换为观察坐标,使用建模坐标变换 构造世界坐标场景,使用窗口视区描述 将观察坐标映射到规 范化观察坐标,将规范化视口 映射到设备坐标,MC,VC,NC,DC,世界坐标 观察坐标的变换,观察参考坐标系为世界坐标系窗口提供参考系(任意方向窗口) 在世界坐标系中选择某个位置作为观察参考坐标

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

5、置,必须满足 (Xw-W1) / (W2-W1) = (Xv-V1) / (V2-V1) (Yw-W3) / (W4-W3) = (Yv-V3) / (V4-V3),窗口到视口的坐标变换,Xv = SxXw+tx Yv = 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),窗口到视口的坐标变换,已知w1=10, w2=20, w3=40, w4=80, v1=80, v2=110, v3=10, v4=

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

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

8、测试来处理线段 当线段的两个端点全在窗口内时,该直线整个在窗口内 当线段的两个端点,一个在窗口内,一个在窗口外时,该直线部分在窗口内,部分在窗口外 当线段的两个端点全在窗口外时,该直线可能整个在窗口外;也可能部分在窗口内,部分在窗口外,线段的裁剪,线段的裁剪,Cohen-Sutherland直线裁剪(CS算法) Liang-Barsky 直线裁剪(LB算法) Nicholl-Lee-Nicholl 直线裁剪(NLN算法) 非矩形裁剪窗口,线段的裁剪,6.7.1 Cohen-Sutherland 线段裁剪,思想: 线段由端点标识; 测试线段端点和窗口边界的关系以确定是否需要计算交点 线段两个端点

9、全在窗口内时,线段整个在窗口内 线段的两个端点,分别在窗口内和窗口外时,该线段部分在窗口内,部分在窗口外 线段的两个端点全在窗口外时 该线段可能整个在窗口外 也可能部分在窗口内,部分在窗口外,扩展窗口的边界将整个2D平面划分为9个区域 每个区域赋予一个4位编码(区域码)b3b2b1b0,CS算法 编码方案,计算直线端点区域编码: c1 和 c2; 判断 c1 和 c2 均为0000,保留直线 c1 & c2 不为零,同在某边界外(有一对相同位置都为1),删除该直线 c1 & c2 为零,需要进一步求解交点,CS 算法描述,求解交点 以左、右、下、上为序,找出端点区域码中第一位为1的位 将窗口边

10、界方程x=w1或x=w2或y=w3或y=w4代入直线方程,计算直线与窗口边界的交点 将交点和另一端点形成新的直线,重复上述过程,直至线段保留或删除,CS 算法描述,(3) 计算交点P,CS线段裁剪算法 举例,C2 = 1000,C1 = 0101,(2) 求与 C1 & C2 = 0000,标识端点的区域码 C1 、C2,(4) 求点区域码P C = 1000,(5) 求与 C & C2 不为零,C = 1000,(6) 线段被裁剪,CS线段裁剪算法 举例,优点:简单,易于实现。 算法中求交点的次数决定了算法的速度。,CS线段裁剪算法小结:,CS线段裁剪算法 作业,已知线段的两个端点 P1(-

11、3/2, 1/6),P2(1/2, 3/2) 窗口边界x = -1, x = 1, y = -1, y = 1 用CS算法对线段进行裁剪,6.7.2 Liang-Barsky 线段裁剪算法,思想:基于直线段参数方程分析的快速直线裁剪算法 参数方程 直线两端点 P1(x1, y1), P2 (x2, y2) x = x1 + (x2 - x1)u y = y1 + (y2 - y1)u, 0u1,6.7.2 Liang-Barsky 线段裁剪算法,已知直线端点 : 起点P1(x1, y1),终点P2(x2, y2) 参数方程: x = x1 + (x2 - x1)u y = y1 + (y2 -

12、 y1)u,LB算法推导 如果直线在窗口内, 则 w1 x1 + dx * u w2 w3 y1 + dy * u w4 统一表示为:Pk * u Qk k = 1, 2, 3, 4 P1 = - dx, Q1 = x1-w1 P2 = dx, Q2 = w2-x1 P3 = - dy, Q3 = y1-w3 P4 = dy, Q4 = w4-y1,6.7.2 Liang-Barsky 线段裁剪算法,LB算法描述 计算 Pk, Qk, k = 1 4 判断 Pk = 0,表示直线平行于窗口某边界 Qk = 0,直线在窗口内,平行边界内 Pk != 0, 用Qk / Pk计算交点所对应的U值,6

13、.7.2 LB线段裁剪算法,计算方法 对每条线计算参数u1和u2 u1 = Max 0, Qk / Pk , Pk 0 如果u1 u2, 则直线在窗口外,否则计算交点坐标,6.7.2 Liang-Barsky 线段裁剪算法,LB线段裁剪算法 举例,已知线段的两个端点P1(3, 4),P2(8, 2) 窗口边界x=1, x=4, y=1, y=3 用LB算法对线段进行裁剪,LB线段裁剪算法 举例1: 已知:线段的两个端点(3,4),(8,2) 窗口边界x=1, x=4, y=1, y=3,线段的参数方程 x = 3 + 5u y = 4 - 2u P1 = -5, Q1 = 2, R1 = -2

14、/5 P2 = 5, Q2 = 1, R2 = 1/5 P3 = 2, Q3 = 3, R3 = 3/2 P4 = -2, Q4 = -1, R4 = 1/2 u1 = max(0, -2/5, 1/2) = 1/2 u2 = min(1, 1/5, 3/2) = 1/5 u1 u2 所以线段全部被裁剪,例2,线段的两个端点(-2,-1)和(1,1.5) 窗口边界x1 = -1, x2 = 1, y1 = -1, y2 = 1,例2,x = 3, y = 2.5 p1 = -3 q1 = -1 r1 = 1/3 p2 = 3 q2 = 3 r2 = 1 p3 = -2.5 q3 = 0 r3

15、= 0 p4 = 2.5 q4 = 2 r1 = 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),LB与CS的比较 LB 效率高于 CS:计算交点数目减少 Liang-Barsky和Cohen-Sutherland算法很容易扩展为三维裁剪算法,6.7.2 Liang-Barsky 线段裁剪算法,LB线段裁剪算法 作业,已知线段的两个端点P1(-1, 3),P2(

16、1, 1) 窗口边界x=0, x=2, y=0, y=2 用LB算法对线段进行裁剪,思想 通过在裁剪窗口周围创立多个区域,从而避免对直线段进行多次裁剪。 适用范围 仅仅适用于2D裁剪,6.7.3 Nicholl-Lee-Nicholl直线裁剪,算法步骤 从P1点向窗口的四个顶角点发出射线 这四条射线和窗口的四条边所在的直线一起将二维平面划分为更多的小区域 。,6.7.3 Nicholl-Lee-Nicholl直线裁剪,6.7.3 Nicholl-Lee-Nicholl直线裁剪,线段端点P1的三种位置,P1在窗口内,P1在窗口左边,P1在角区,情况 1:P1位于窗口内部,则设定四个裁剪区域 P2位于窗口内部,P1P2保留; P2位于窗口外部,计算所在区域边界交点P并保留P1P,L,T,B,R,P1,NLN直线裁剪,情况2: P1位于窗口左侧: P2 位于L区域,计算和左边界交点P并保留P1P; P2位于区域LT,计算直线与窗口左

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

当前位置:首页 > 高等教育 > 大学课件

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