第4章二维填充图元的生成内容摘要:
xi的交点向右求余; M图中次序 : x0, x1, x2, x3 次序可以任意 39 边缘填充算法 * 算法 2(以边为中心的边缘填充算法) 将绘图窗口的背景色置为 ; 对多边形的每一条非水平边做: 从该边上的每个像素开始向右求余 M40 特点 适合用于具有帧缓存的图形系统。 处理后,按扫描线顺序读出帧缓存的内容,送入显示设备 优点:算法简单 缺点:对于复杂图形,每一像素可能被访问多次,输入 /输出的量比扫描线算法大得多 边缘填充算法 * 41 扇形区域的描述 圆的半径 R 起始角度: 1 终止角度: 2 原理:同扫描转换多边形 对每条扫描线,首先计算与扇形区域边界的交点,再用指定颜色绘制绘制配对交点间的像素 问题 如何确定扫描线与直线段和圆弧段的交点及相交顺序。 扫描转换扇形区域 42 方法:分类 按点 P1(x, y) 和 P2(x, y) 点所处象限的不同,需要将扇形区域分成 4 4=16种情况 假设 P1 点落在第一象限 扫描线和区域边界只有 2个交点 扇形区域的扫描转换分四种情况 (1) P2落在第一象限 区域: OP1A和 AP1P2 扫描转换扇形区域 43 (2)P2落在第二象限,此时又分为两种情况 当 时 三个区域: OAP AP1BP2和 P2BC 当 时 三个区域: OAP AP1BP2和 P1BC 扫描转换扇形区域 y y1 221 yy ),(),( 22212212yyRByy xyA ),(),( 12221121yyRByy xyA 44 (3) P2 落在第三象限 三个区域: P1CA、 BOP1A和 P2OB (4) P2落在第四象限 三个区域: AP1D、 BOP1 A、 CP2OB 和 CEP2 扫描转换扇形区域 ),0()0,(),( 1212 RCRByyRA ),0()0,(),(),( 22221212RDRCyyRByyRA45 遗留问题:当 P1 落在其它区域时 ? P1 落在第二、三、四象限时,将扇形区域绕坐标原点顺时针旋转 90度( 180, 270),使 P1 落在第 1象限 扫描转换 再逆时针旋转 90度( 180, 270) 扫描转换扇形区域 P1 P2 P2 P1 P1落在第四象限 P2 P1 P1落在第一象限 P1 P2 P1落在第四象限 旋转 270度 扫描转换 逆旋转 270度 46 区域:点阵表示的图形,像素集合 表示方法:内点表示、边界表示 内点表示 枚举出区域内部的所有像素 内部的所有像素为同一个颜色 边界像素与内部像素的颜色不同 边界表示 枚举出边界上所有的像素 边界上的所有像素为同一颜色 内部像素与边界像素的颜色不同 区域填充 47 种子填充法 对区域重新着色的过程 将指定的颜色从 种子点 开始扩展到整个区域 区域填充算法要求区域是连通的 区域填充 48 连通性 4连通区域:区域中任意两点 可通过上下左右四个方向互相 到达 8连通区域:区域中任意两点 可通过上下左右和对角线八 个方向互相到达 区域填充 49 区域填充 4连通与 8连通区域的区别 连通性: 4连通可看作 8连通区域,但对边界有要求不同 依据区域内点能否访问到区域外的点,对边界的要求是 4连通区域,边界只要 8连通即可 8连通区域,边界必须是 4连通 例:如左图 ( 1) 4连通区域,边界为 像素 ( 2) 8连通区域,边界为 和 像素 50 种子填充法 种子填充算法(泛滥填充: floodfill) ( 1)内点表示的 4连通区域 种子 P(x,y),原色 oldColor,新颜色 newColor 方法:先判断 P(x, y)的颜色,若其值不等于 oldColor,说明该像素位于区域外,或已设置为 newColor,算法结束; 否则,置像素颜色 为 newColor,再对 其相邻的上下左右四 个像素分别作为种子 作上述递归处理。 void FloodFill4(int x,int y,int oldColor, int newColor) { if(GetPixel(x,y) == oldColor) { SetPixel(x,y,newColor)。 FloodFill4(x,y+1,oldColor,newColor)。 FloodFill4(x,y1,oldColor,newColor)。 FloodFill4(x1,y,oldColor,newColor)。 FloodFill4(x+1,y,oldColor,newColor)。 } }/*end of FloodFill4() */ 51 种子填充法 ① FloodFill4(x, y+1, oldColor, newColor)。 ② FloodFill4(x, y1, oldColor, newColor)。 ③ FloodFill4(x1, y, oldColor, newColor)。 ④ FloodFill4(x+1, y, oldColor, newColor)。 52 ( 2)边界表示的 4连通区域 种子填充法 void BoundaryFill4(int x, int y, int oldColor, int newColor) {//oldColor边界像素颜色 int color。 color = GetPixel(x, y)。 if((color != oldColor) amp。 amp。 (color != newColor)) { SetPixel(x, y, newColor)。 BoundaryFill4(x,y+1,oldColor,newColor)。 BoundaryFill4(x,y1,oldColor,newColor)。 BoundaryFill4(x1,y,oldColor,newColor)。 BoundaryFill4(x+1,y,oldColor,newColor)。 } }/*end of BoundaryFill4( ) */ 53 缺点 有些像素需要重复判断,降低算法效率 栈结构占空间 递归执行,算法简单,但效率不高,区域内每一像素都引起一次递归,进 /出栈,费时费内存 改进 减少递归次数,提高效率 方法之一使用扫描线填充算法 种子填充法 54 扫描线算法 * 扫描线算法 目标:减少递归层次 适用于内点表示的 4连通区域 基本过程: 当给定种子点时,首先填充种子点所在的扫描线上的位于给定区域的一个区段,然后确定与这一区段相通的上下两条扫描线上位于给定区域内的区段,并依次保存下来。 反复这个过程,直到填充结束 55 扫描线算法 * 算法步骤 初始化 :将种子区段压入堆栈。第4章二维填充图元的生成
相关推荐
删除组织单位 设置组织单位属性 添加组织单位 在域中合理地添加和设置组织单位,不仅方便了管理员对域中用户和组的管理,而且还有利于网络的扩展。 要添加组织单位,如图 418所示。 图 418 创建组织单位 删除组织单位 当域中的某个组织单位不再发挥作用时,管理员可将其删除,以免影响对其他组织单位的管理。 要删除不再需要的组织单位,可以依次选择“开始” → “程序” → “管理工具” → “
/TD /TR /TABLE /BODY /HTML 程序输出如图 43所示: 3. 方法重载 方法重载允许一个类中有同名的方法存在,即一个类中可以有两个以上的方法取相同的名字。 为了区分这些同名方法,要求方法有不同的参数,要么参数个数不同,要么参数类型不同。 方法重载使用 Overloads修饰符。 动手做: %@page LANGUAGE = vb
合器的基本结构与工作原理 654321875 1 3 电 磁 转 差 离 合 器 原 理 图 电磁转差离合器的组成 它由电枢 、 机座 、 磁极 、 励磁绕组 、 导磁体组成。 1)直流励磁绕组:由控制装置输出的可调压直流电供电 ,产生固定磁场; 2)机座:它既是离合器的结构体 , 又是磁路的一部分; 3)电枢:圆筒形实心钢体 , 兼有导磁 、 导电作用 , 直接套在异步电动机 5的轴上 ,
B在信号处理中的应用 格式: [y,x]=lsim(a,b,c,d,u,t) 功能:返回连续 LTI系统 (2)对任意输入的离散 LTI系统响应函数 dlsim( ) 格式: [y,x]=dlsim(a,b,c,d,u) 功能:返回离散 LTI系统 39。 ( ) ( ) ( )( ) ( ) ( )x t a x t b u ty t c x t d u t
CPU正在从总线上读来自于 MEM或 I/O设备的数据。 M/IO: 输出,三态 区分是读写存储器还是读写 I/O端口(即地址总线上的地址是存储器地址还是 I/O端口地址)。 23 最小模式下的主要引线 DEN: 输出,三态 数据总线允许信号。 用来打开外部数据总线缓冲器。 DT/R:输出,三态 表明 CPU正在传送还是接收数据,用来作为外部数据总线缓冲器的方向控制;
vmlinuz2.*.*。 • 然后对 vmlinuz进行 rdev。 • 然后就可以用 loadlin vmlinuz 来启动 Linux了 • 这样,整个 loadlin的使用就完成了。 冶金工业出版社 高等教育 “ 十一五 ” 规划教材 8 安装后 Linux系统的构成 • 在 Linux安装好以后,其主文件系统上的目录结构如下图所示。 冶金工业出版社 高等教育 “ 十一五 ” 规划教材