cg04.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cg04

第4章 二维填充图元的生成 本章目标 掌握如何绘制填充图元(矩形、多边形等) 扫面转换算法(扫描线算法) 填充算法 学会使用OpenGL的绘制函数 主要内容 填充图元 扫描转换矩形 扫描转换多边形 扫描转换扇形区域 区域填充 以图像填充区域 字符的表示与输出 OpenGL相关函数 4.1 填充图元 填充(Filling)图元 矩形(Rectangle) 多边形(Polygon) 扇形(Ellipse Arc) 步骤 确定那些像素位于填充图元的内部 用指定颜色绘制这些像素 两类方法 扫描转换(Scan Converting): 参数-点阵 填充(Filling) : 点阵-点阵 4.2 扫描转换矩形 含义 用指定颜色填充矩形内部区域 定义矩形的参数 左下角坐标(xmin, ymin) 右上角坐标(xmax, ymax) 4.2 扫描转换矩形 问题 矩形是简单的多边形,那么为什么要单独处理矩形? 与一般多边形相比可简化计算 应用非常多,如窗口系统 共享边界如何处理? 原则:左闭右开,下闭上开 4.3 扫描转换多边形 多边形的表示方法 顶点表示 顶点序列P0P1P2…Pn 点阵表示 扫描转换多边形:将多边形顶点表示形式转换成点阵表示形式 三种方法:逐点判断法;扫描线算法;边缘填充法 多边形分类(只考虑:简单多边形,即多边形边不自相交) 凸多边形(convex):内角小于180度 凹多边形(concave):存在内角大于180度 4.3 扫描转换多边形 如何识别多边形的凸凹性 方法1:多边形边的延长线是否划分顶点在两侧 方法2:向量的叉积 每条边建立一个向量,测试相邻边的叉积z坐标的正负 (1)如果叉积同号,那么是凸多边形 (2)如果叉积不同号,那么是凹多边形 4.3 扫描转换多边形 向量叉积(Cross Product of Two Vector) 4.3.1 逐点判断法 基本原理 判断绘图窗口内的像素是否位于多边形内,若是,则用指定颜色绘制该像素 问题 如何判断点在多边形的内外关系? 射线法 累计角度法* 编码法* 4.3.1 逐点判断法 4.3.1 逐点判断法 判断点是否在多边形内-射线法 步骤 从待判别点 v 发出射线 求与多边形交点个数 k k 的奇偶性决定了点与多边形的内外关系 偶数:外 奇数:内 4.3.1 逐点判断法 判断点是否在多边形内-射线法 奇异情况 射线在边上:无数个点 判断是否与边同线 交点为顶点:算几个? 异侧:1个 同侧:2个 4.3.1 逐点判断法 思考题 下图是某油田油井分布图,已知每口油井的位置(x, y坐标值)和产油量,如何求任意多边形(虚线所示)中的总产油量? 4.3.1 逐点判断法 逐点判断扫描转换方法 特点 程序简单 测试点是否在多边形内的算法速度太慢,效率低 改进 逐点判断法孤立考虑各个像素与多边形的内外关系 利用内部点的连续性 4.3.2 扫描线算法 英文:Scan-Line Algorithm 目标 利用相邻像素之间的连贯性,提高算法效率 处理对象:简单多边形 非自交多边形 (边与边之间除了顶点外无其它交点) 扫描线(Scanning Line) 平行于坐标轴的直线 一般取平行于X轴 区间:扫描线与边的交点间的线段 4.3.2 扫描线算法 4.3.2 扫描线算法 计算交点 分类 第一类交点:位于同一条边上的后继交点--(P2, P4) 第二类交点:新出现的边与扫描线的交点--(P3) 计算:由扫描线y=e与多边形的交点递推计算扫描线 y=e+1的交点 第一类交点:x’=x+1/m 第二类交点: 线段的下端点即为交点 4.3.2 扫描线算法 计算交点(续) 交点取整规则: 要求:使生成的像素全部位于多边形之内 用于线画图元扫描转换的四舍五入原则导致部分像素位于多边形之外,从而不可用 4.3.2 扫描线算法 取整规则 假定非水平变与扫描线 y = e 相交,交点的横坐标为x 规则1 x为小数,即交点落于扫描线上两个相邻像素之间 (a)交点位于左边上,向右取整 (b)交点位于右边上,向左取整 4.3.2 扫描线算法 规则2 落在右上边界的像素不予填充。 具体实现时,只要对扫描线与多边形的相交区间左闭右开 4.3.2 扫描线算法 规则3 扫描线与多边形的顶点相交时,采用上开下闭及右开左闭取交点,保证交点正确配对。 检查两相邻边在扫描线的哪一侧。 只要检查顶点的两条边的另外两个端点的Y值,两个Y值中大于交点Y值的个数是0,1,2,来决定取0,1,2个交点 4.3.2 扫描线算法 计算交点(

文档评论(0)

badjka + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档