- 1、本文档共67页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[常规图形系统中
2D Viewing Lectured by Hua Yan Contents 2D Viewing Pipeline Clipping Window Viewport 2D Clipping Point clipping Line clipping Area clipping Text clipping 6.1 2D Viewing Pipeline Def. 常规图形系统中,世界坐标系中指定的用于显示的坐标区域- 裁剪窗口(clipping window)或窗口(window) Def. 显示设备上用于窗口映射的坐标区域- 视区、视口(viewport)。 Def. 通常,世界坐标系中部分场景映射到设备坐标系的过程-观察(视图、视像)变换。 坐标系 世界坐标系(World Coordinates) 图形定义时所采用的坐标系,坐标的大小和尺寸由用户确定。 设备坐标系(Device Coordinates) 与一个图形设备相关的坐标系叫设备坐标系。如显示器或打印机有它们自己的坐标系。 规范化坐标系(Normalized Coordinates) 它是独立于具体物理设备的一种坐标系,其显示空间在X和Y方向上都是从0到1 窗口-视口变换 窗口-视口变换 保持视口与窗口中的对象具有同样的相对位置,必须满足 (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=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 OpenGL 2D Viewing Functions (P.253-257) Demo (P.258-259) 6.2 2D Clipping 裁剪定义Clipping 识别图形在指定区域内或区域外的过程-裁剪 应用包括: 从定义的场景中取出用于观察的部分; 在三维图形中标识出可见面; 防止线段或对象的边界混淆; 用实体造型来创建对象; 显示多窗口的环境; 允许进行拷贝、移动或删除等绘图操作 6.2 2D Clipping 裁剪窗口:用来裁剪对象的区域。 裁剪时机 针对窗口裁剪:只有窗口内的部分映射到设备坐标系中,不用将多余图元变换到设备空间中 针对视口裁剪:映射后,用视口边界裁剪,可通过合并观察和几何变换矩阵来减少计算量 6.2 2D Clipping 裁剪类型 点裁剪 直线裁剪 多边形区域裁剪 曲线裁剪(P.279) 文字裁剪 6.2.1 点裁剪 点(x,y)如果满足下列不等式则保留: w1 = x = w2 w3 = y = w4 6.2.2 直线裁剪 6.2.2 直线裁剪 Cohen-Sutherland直线裁剪算法 Liang梁友栋-Barsky直线裁剪算法 Nicholl-Lee-Nicholl直线裁剪算法 非矩形裁剪窗口(P.270自学) 6.2.2.1 CS直线裁剪算法 IDEA 直线由端点标识; 测试直线端点和窗口边界的关系以确定是否需要计算交点 CS 编码方案 扩展窗口的边界将整个2D平面划分为9个区域 每个区域赋予一个4位编码, 称为区域码 编码规则 b0 = 1 iff x w1 b1 = 1 iff x w2 b2 = 1 iff y w3 b3 = 1 iff y w4 算法描述 计算直线端点编码, c1 和 c2; 判断 c1 和 c2 均为0000,保留直线 c1 c2 不为零,同在某一边界外,删除该直线 c1 c2 为零,需要进一步求解交点 以L,R,B,T 为序,找出端点区域码中第一位为1的位,将x=w1/w2或y=w3/w4带入直线方程,计算直线与窗口边界的交点,将交点和另一端点重复上述过程,直至线段保留或删除 程序流程图 程序实现(P.264) CS线段裁剪算法 举例 CS线段裁剪算法 举例 CS线段裁剪算法小结 优点:简单,易于实现。 算法中求交点的次数决定
文档评论(0)