- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二维观察
第六章 二维观察 问题:如何方便地实现在显示设备上对二维图形进行观察 主要内容 6.1 观察流程 6.2 世界坐标系到观察坐标系的变换 6.3 裁剪 点的裁剪 线的裁剪 多边形的裁剪 字符串的裁剪 6.1 观察流程 基本概念 在计算机图形学中,将在世界坐标系中需要进行观察和处理的一个坐标区域称为窗口(Window) 将窗口映射到显示设备上的坐标区域称为视区(Viewport) 要将窗口内的图形在视区中显示出来,必须经过将窗口到视区的变换(Window-Viewport Transformation)处理,这种变换就是观察变换(Viewing Transformation)。 (1)、模型坐标系(局部坐标系):当构造单个对象的数字模型 时,为了方便,可以将其置于一个特定的坐标系下,即模型坐 标系或局部坐标系. 观察坐标系(View Coordinate)和规格化坐标系(Normalized Device Coordinate) 观察坐标系是依据窗口的方向和形状在世界坐标平面中定义的直角坐标系。 规格化坐标系也是直角坐标系,它是将二维的坐标系规格化到(0.0,0.0)到(1.0,1.0)的坐标范围内形成的。 引入了观察坐标系和规格化设备坐标系后,观察变换分为如下图所示的几个步骤,通常称为二维观察流程,或者二维观察变换流水线。 二维图形的显示流程图 ?变焦距效果 ?整体放缩效果 6.2 世界坐标系到观察坐标系的变换 世界坐标系到观察坐标系的变换分由两个变换步骤合成: 1. 将观察坐标系原点移动到世界坐标系原点 2. 绕原点旋转使两坐标系重合 窗口到视区的变换 要将窗口内的点(xw,yw)映射到相对应的视区内的点(xv,yv)需进行以下步骤: (1) 将窗口左下角点移至世界系统系的坐标原点 (2) 针对原点进行比例变换 (3) 进行反平移 ?窗口内的点(xw,yw)映射到对应视口的点(xv,yv),为保证视区与窗口中相同对象具有同样的相对位置,需满足: 窗口到视区的变换 窗口到视区的变换 6.3 裁剪 裁剪(定义): 识别指定区域内或区域外的图形部分的过程称为裁剪(clipping), 用来裁剪对象的区域成为裁剪窗口 裁剪的应用: 点的裁剪、直线段的裁剪、多边形的裁剪、曲线边界对象的裁剪、文字的裁剪等 假设窗口是标准矩形,即边与坐标轴平行的矩形,由上(y=ywmax)、下(y=ywmin)、左(x= xwmin)、右(x= xwmax)四条边描述。 一、点的裁剪 二、直线段的裁剪 假定直线段用p1(x1,y1)p2(x2,y2)表示。则直线段和剪裁窗口的可能关系: –完全落在窗口内 –完全落在窗口外 –与窗口边界相交 实交点是直线段与窗口矩形边界的交点。 虚交点则是直线段与窗口矩形边界延长线或直线段的延长线与窗口矩形边界的交点。 直接求交算法 直线与窗口边都写成参数形式,求参数值。 三种直线裁剪方法: Sutherland–Cohen算法 中点分割算法 梁友栋-Barsky算法(Cyrus-Beck算法和梁友栋–Barsky算法) a:算法的第一步 判断完全可见/不可见 b:算法的第二步 程序代码 程序代码 算法的步骤: (1) 输入直线段的两端点坐标:p1(x1,y1)、p2(x2,y2),以及窗口的四条边界坐标:xwmin、xwmax、ywmin、ywmax。 (2) 对p1、p2进行编码:点p1的编码为code1,点p2的编码为code2。 (3) 若code1|code2=0,对直线段应简取之,转(6);否则,若code1code2≠0,对直线段可简弃之,转(7);当上述两条均不满足时,进行步骤(4)。 (4) 确保p1在窗口外部:若p1在窗口内,则交换p1和p2的坐标值和编码。 (5) 按左、右、下、上的顺序求出直线段与窗口边界的交点,并用该交点的坐标值替换p1的坐标值。也即在交点s处把线段一分为二,并去掉p1s这一段。考虑到p1是窗口外的一点,因此可以去掉p1s。转(2)。 (6) 用直线扫描转换算法画出当前的直线段p1p2。 (7) 算法结束。 Sutherland–Cohen直线裁剪算法小结 本算法的优点在于简单,易于实现。它可以简单的描述为将直线在窗口左边的部分删去,按左,右,下,上的顺序依次进行,处理之后,剩余部分就是可见的了。在这个算法中求交点是很重要的,它决定了算法的速度。另外,本算法对于其他形状的窗口未必同样有效。 特点:用编码方法可快速判断线段的完全可见和显然不可见。 基本思想:从P0点出发找出离P0最近的可见点,和从P1点出发找出离P1最近的可见点。这两个可见点的连线就是原线段的可见部分。 与Co
原创力文档


文档评论(0)