第3章基本图形生成算法2_第1页
第3章基本图形生成算法2_第2页
第3章基本图形生成算法2_第3页
第3章基本图形生成算法2_第4页
第3章基本图形生成算法2_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,实区域填充算法,第三章 基本图形生成算法,实区域填充算法,确定待填充的象素,即检查光栅的每一像素是否位于多边形区域内,解决的主要问题是什么?,图案填充还有一个什么象素填什么颜色的问题 曲线围成的区域,可用多边形逼近,点在多边形内的包含性检验,检验夹角之和 射线法检验交点数,检验夹角之和,若夹角和为0,则点p在多边形外,若夹角和为360,则点p在多边形内,夹角如何计算?,大小:利用余弦定理 方向:令,当TBP斜率,为顺时针角,当T0时,AP斜率BP斜率,为逆时针角,射线法检验交点数,交点数=偶数(包括0) 点在多边形之外,交点数=奇数 点在多边形之内,左闭右开,包围盒法,凸多边形,凹多边形,逐

2、点测试效率低不实用怎么办?,实区域填充算法分类,扫描线填充算法 扫描线顺序 种子填充算法 内部一个点出发,扫描线填充算法,求交:I4, I3, I2, I1 排序:I1, I2, I3, I4 交点配对:(I1, I2), (I3, I4) 区间填色,利用图形的空间连贯性和扫描线的连贯性,填充扩大化问题,解决方法: 取中心扫描线y+0.5 检查交点右方像素的中心是否落在区间内 xlx+0.5xr,11,顶点交点的计数问题,检查交于该顶点的两条边的另外两个端点的y值大于该顶点y值的个数,计数0次,计数1次,计数2次,有序边表算法,影响一般扫描线填充算法效率的因素?,把多边形所有边放在一个表中,按

3、顺序取出,分别计算与每条扫描线的交点?,如何提高效率?,建立每条扫描线的活性边表,何谓活性边?,求交和排序,目标是简化交点计算,有序边表算法,活性边表的建立,结点信息 x:当前扫描线与边的交点 x:从当前扫描线到下一条扫描线之间的x增量 ymax:边所交的最高扫描线号,活性边表的更新,新边插入 旧边删除,x =1/k,有序边表算法,对每条扫描线建立一个新边表,结点信息 x0:扫描线与边的初始交点 x:从当前扫描线到下一条扫描线之间的x增量 ymax:边所交的最高扫描线号 边结点不必排序,活性边表,step1:把新边表NETi中的边结点,用插入排序法 插入活性边表AET,使之按X坐标递增顺序排序

4、; step2:遍历AET表,把配对交点之间的区间(左闭右开)上的各象 素(X,Y),用drawpixel(x,y,color)改写象素颜色值; step3:遍历AET表,把Ymax=i的结点从AET表中删除,并把 Ymaxi的结果点的X值递增X; step4:重复各扫描线,算法:(对每一条扫描线i),有序边表算法,优点: 对每个像素只访问一次 与设备无关,缺点: 数据结构复杂 只适合软件实现,边填充算法(Edge Fill Algorithm),边填充算法(Edge Fill Algorithm),优点: 最适合于有帧缓存的显示器 可按任意顺序处理多边形的边 仅访问与该边有交点的扫描线上右方

5、的像素,算法简单 缺点: 对复杂图形,每一像素可能被访问多次,输入/输出量大 图形输出不能与扫描同步进行,只有全部画完才能打印,栅栏填充算法(Fence Fill Algorithm),引入栅栏的目的?,21,种子填充算法,假设多边形区域内至少有一个像素已知,区域定义法: Interior-defined Boundary-defined,Flood-fill algorithm,Boundary-fill algorithm,区域连通方式: 4-connected 8-connected,区域连通方式对填充结果的影响,4连通区域边界填充算法的填充结果,8连通区域边界填充算法的填充结果,简单的

6、种子填充算法(4连通边界),种子像素入栈 当栈非空时,重复以下步骤: 栈顶像素出栈 将出栈象素置成填充色 按左、上、右、下顺序检查与出栈象素相邻的四象素,若其中某象素不在边界上且未被置成填充色,则将其入栈,填充算法演示,缺点?,4-connected boundary-fill void BoundaryFill4(int x,int y,int fill,int boundary) int current; current = getpixel(x, y); if (current != boundary) ,4-connected boundary-fill void FloodFill4

7、(int x,int y,int fillColor,int oldColor) int current; current = getpixel(x, y); if (current = oldColor) putpixel(x, y, fillColor); BoundaryFill4(x+1, y, fillColor, oldColor); BoundaryFill4(x-1, y, fillColor, oldColor); BoundaryFill4(x, y+1, fillColor, oldColor); BoundaryFill4(x, y-1, fillColor, oldC

8、olor); ,扫描线种子填充算法,利用扫描线的连贯性 减少递归次数,扫描线种子填充算法,种子像素入栈 当栈非空时,重复以下步骤: 栈顶像素出栈 沿扫描线对出栈像素的左右像素进行填充,直到遇到边界像素为止 将上述区间内最左、最右像素记为xl和xr 在区间xl,xr中检查与当前扫描线相邻的上下两条扫描线是否全为边界像素、或已填充的像素,若为非边界、未填充的像素,则把每一区间的最右像素取为种子像素入栈,二维光栅图形的混淆与反混淆,混淆现象 反混淆方法,混淆(antialiasing),图形的锯齿状:图形信号连续,光栅显示系统中,离散表示。 用离散量(像素)表示连续的量(图形)而引起的失真,叫混淆或叫走样(aliasing) 光栅图形混淆: 阶梯状边界; 图形细节失真; 狭小图形遗失:动画序列中时隐时现,产生闪烁。,图形反走样技术(antialiasing),1.从硬件角度提高分辨率 高分辨率显示器,显示器点距减少一倍 帧缓存容量增加到原来的4倍 输带宽提高4倍 扫描转换花4倍时间,代价高,图形反走样技术(antialiasing),2.从软件角度替高分辨率 高分辨率计算,低分辨率显示 像素细分技术,相当于后置滤波,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论