第5章基本图形生成算法--第三讲.pptVIP

  • 3
  • 0
  • 约1.56千字
  • 约 17页
  • 2018-04-23 发布于河南
  • 举报
第5章基本图形生成算法--第三讲

第五章 基本图形生成算法 多边形的扫描转换 区域填充 字符和矢量图形的显示 反走样基础 1、多边形的扫描转换 多边形的表示方法: 顶点表示:用多边形顶点的序列来刻划多边形。直观、几何意义强、占内存少;不能直接用于面着色。 点阵表示:用位于多边形内的像素的集合来刻划多边形。失去了许多重要的几何信息;便于运用帧缓冲存储器表示图形,易于面着色。 什么是多边形的扫描转换? 多边形的扫描转换:把多边形的顶点表示转换为点阵表示,也就是对于给定边界的多边形,求出位于其内部的各个像素,并给帧缓冲器内的各个对应元素设置相应的灰度和颜色,通常称这种转换为多边形的扫描转换。 几种方法:逐点判断法;扫描线算法;边缘填充法;栅栏填充法;边界标志法。 逐点判断法 对于屏幕上的每个像素点,逐个判断是否该点位于指定的多边形内部,进而采取着色操作。 可以使用多边形的外接矩形(包围盒),来代替屏幕范围,缩小待判断点的范围。 具体的方法有射线法、累计角度法、编码法等。 射线法 算法的基本原理和步骤: 1、从待判别点v发出射线 2、求交点个数k 3、K的奇偶性决定了点与多边形的内外关系,当正好相交于两条边的端点时,需要单独判断 p2 p1 p0 p4 累计角度法 p1 p2 p3 v θ1 θ2 θ3 算法原理: 从v点向多边形P顶点发出射线,形成有向角θi 计算有向角的和,并得出结论: 逐点判断法的主要缺陷 逐点判断的算法虽然程序简单,但不可取。原因是速度太慢,主要是由于该算法割断了各像素之间的联系,孤立地考察各像素与多边形的内外关系,使得几十万甚至几百万个像素都要一一判别,需要做大量的乘除运算,花费很多时间。 2、x-扫描线算法 算法目标: 利用相邻像素的空间连贯性,提高算法的效率。 空间连贯性:除边界之外的临近像素几乎都具有相同的特征。 算法处理的对象: 非自交多边形:两个边之间除了通过顶点连接以外没有其它交点。 算法原理 扫描线法的原理 a.求交 b.排序 c.交点配对 d.区间填色 (1, 2),( 3, 4)…… 交点可能存在的问题 算法需要遵循的几个规则 交点的取整规则 要求:使生成的像素全部位于多边形之内 用于线画图元扫描转换的四舍五入原则导致部分像素位于多边形之外,从而不可用 假定非水平边与扫描线 y=e相交,交点的横坐标 为x, 规则如下 规则1: X为小数,即交点落于扫描线上两个相邻像素之间时(向内部取整): (a)交点位于左边上,向右取整 (b)交点位于右边上,向左取整 规则2: 边界上像素的取舍问题,要避免填充扩大化。 解决方法: 边界像素:规定落在右上边界的像素不予填充。具体实现时,只要对扫描线与多边形的相交区间左闭右开,下闭上开。 技巧:实际操作中,左边、下边分别对应x、y坐标小的一侧 提问:水平边怎么处理? 按上述规则,上边填充下边不填充 规则3: 扫描线与多边形的顶点相交时,交点的取舍,要保证交点正确配对。 解决方法: 检查两相邻边在扫描线的哪一侧。 只要检查顶点的两条边的另外两个端点的Y值,两个Y值中大于交点Y值的个数是0,1,2,对应的取0,1,2个交点。 算法步骤: (1)确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大y值(ymin和ymax)。 (2)从y=ymin到y=ymax,每次用一条扫描线进行填充。 (3)对一条扫描线填充的过程可分为四个步骤: a.求交 b.排序 c.交点配对 d.区间填色 扫描线算法是多边形扫描转换的常用算法。与逐点判断算法相比,扫描线算法充分利用了相邻像素之间的连贯性,避免了对像素的逐点判断和反复求交的运算,达到了减少了计算量和提高速度的目的。 算法小结

文档评论(0)

1亿VIP精品文档

相关文档