线填充种子填充线宽和线型

合集下载

实验2:多边形区域扫描线填充或种子填充

实验2:多边形区域扫描线填充或种子填充

实验2:多边形区域扫描线填充或种子填充计科102 蓝广森 1007300441一、实验目的通过实验,进一步理解和掌握几种常用多边形填充算法的基本原理掌握多边形区域填充算法的基本过程掌握在C/C++环境下用多边形填充算法编程实现指定多边形的填充。

二、实验内容及要求实现多边形区域扫描线填充的有序边表算法,并将实现的算法应用于任意多边形的填充,要求多边形的顶点由键盘输入或鼠标拾取,填充要准确,不能多填也不能少填。

要求掌握边形区域扫描线填充的有序边表算法的基本原理和算法设计,画出算法实现的程序流程图,使用C或者VC++实现算法,并演示。

三、实验原理种子填充算法又称为边界填充算法。

其基本思想是:从多边形区域的一个内点开始,由内向外用给定的颜色画点直到边界为止。

如果边界是以一种颜色指定的,则种子填充算法可逐个像素地处理直到遇到边界颜色为止。

种子填充算法常用四连通域和八连通域技术进行填充操作。

四向连通填充算法:a)种子像素压入栈中;b)如果栈为空,则转e);否则转c);c)弹出一个像素,并将该像素置成填充色;并判断该像素相邻的四连通像素是否为边界色或已经置成多边形的填充色,若不是,则将该像素压入栈;d)转b);e)结束。

扫描线填充算法的基本过程如下:当给定种子点(x,y)时,首先填充种子点所在扫描线上的位于给定区域的一个区段,然后确定与这一区段相连通的上、下两条扫描线上位于给定区域内的区段,并依次保存下来。

反复这个过程,直到填充结束。

区域填充的扫描线算法可由下列四个步骤实现:(1)初始化:堆栈置空。

将种子点(x,y)入栈。

(2)出栈:若栈空则结束。

否则取栈顶元素(x,y),以y作为当前扫描线。

(3)填充并确定种子点所在区段:从种子点(x,y)出发,沿当前扫描线向左、右两个方向填充,直到边界。

分别标记区段的左、右端点坐标为xl和xr。

(4)并确定新的种子点:在区间[xl,xr]中检查与当前扫描线y上、下相邻的两条扫描线上的象素。

CAD绘图中的线型与填充效果应用

CAD绘图中的线型与填充效果应用

CAD绘图中的线型与填充效果应用CAD(计算机辅助设计)是一种利用计算机技术辅助进行绘图和设计的工具。

在CAD软件中,线型和填充效果是非常重要的功能之一。

本文将主要介绍CAD绘图中的线型和填充效果的应用技巧。

1. 线型的选择与绘制在线型的选择方面,CAD软件通常提供了多种不同的线型选项,如实线、虚线、点线、隐藏线等。

这些线型不仅用于区分不同的图形元素,还可以传达一些特定的信息。

绘制线型时,可以通过以下步骤进行操作:1)选择绘图工具(如直线工具、多边形工具等);2)在绘图界面上点击起点,然后按住鼠标拖动到终点;3)在绘制过程中按住Ctrl键,可以切换不同的线型;4)松开鼠标即可完成线型绘制。

此外,有些CAD软件还允许用户自定义线型。

用户可以根据自己的需求创建和保存特定的线型样式,从而提高绘图的效率和准确性。

2. 填充效果的应用填充效果是CAD软件中常用的一种图形渲染方法,用于给闭合图形区域添加颜色、纹理、渐变等效果。

通过填充效果,可以使图形更加生动、立体,同时也有助于图形的理解和表达。

实现填充效果的步骤如下:1)选中需要填充的图形区域;2)选择填充工具(如颜色填充工具、渐变填充工具等);3)在填充工具面板中选择所需的填充样式;4)用鼠标点击图形区域内即可完成填充。

在CAD软件中,填充效果的样式多种多样,可以根据具体需要选择合适的填充样式。

同时,一些CAD软件还提供了自定义填充样式的功能,用户可以根据自己的需要自定义各种独特的填充效果。

填充效果不仅适用于平面图形,还可以用于三维图形的表达。

利用不同的填充效果,可以使三维模型更加真实、立体,并且更好地模拟光照效果。

因此,在进行建筑、工程等设计时,填充效果的应用尤为重要。

3. 线型与填充效果的组合应用在CAD绘图中,线型和填充效果往往需要同时使用,以达到更好的图形表达效果。

线型用于描绘图形的轮廓和边缘,而填充效果则为图形区域添加颜色和纹理,使其更加明确和具体。

CAD线型和填充的应用技巧

CAD线型和填充的应用技巧

CAD线型和填充的应用技巧在AE(After Effects)软件中,线型和填充是非常常见的设计元素。

了解如何正确应用和使用线型和填充,可以帮助我们创建出更加出色的动态图形效果。

本文将介绍一些关于CAD线型和填充的应用技巧,希望对初学者和爱好者有所帮助。

首先,让我们从线型开始讨论。

CAD线型指的是计算机辅助设计中使用的不同线条样式。

AE软件提供了一系列预设的线型供我们选择,也可以根据需要创建自定义的线型。

在AE软件中,使用线型可以为图形添加纹理和视觉效果。

我们可以使用线型为文字、形状或者插图添加轮廓,并通过增加线宽和改变线条样式的方式来调整外观。

通过调整线型的颜色、粗细和透明度,我们可以创建出各种视觉效果,如简洁、现代或者复古的风格。

除了使用预设的线型,我们还可以创建自定义的线型。

首先,我们可以选择一个形状图层,然后进入“效果”菜单,选择“样式”,点击“线宽”旁边的小三角图标,选择“添加”按钮。

在弹出的对话框中,我们可以设置线型的粗细、颜色和透明度等属性。

点击“确定”后,我们的自定义线型就创建完成了。

可以随时修改这些属性,并将其应用到需要的形状上。

接下来,我们来讨论填充。

填充是指为形状图层添加颜色、纹理或者渐变色等视觉效果。

在AE软件中,我们可以为形状图层选择不同的填充类型,如纯色、渐变色、图案或者纹理。

使用填充可以帮助我们创建出丰富多样的视觉效果。

我们可以根据需要选择单一的颜色,或者使用渐变色为形状添加深度和立体感。

同时,我们还可以添加图案或纹理来增加图形的复杂度和质感。

与线型类似,我们也可以创建自定义的填充效果。

在形状图层的“效果”菜单中,选择“生成”或“样式”选项可以找到各种填充特效。

我们可以根据需要调整这些特效的属性,如颜色、透明度、大小或者方向等,从而创建出满足需求的填充效果。

与设置好的填充属性不同,自定义的填充可以随时修改和调整,非常灵活。

在使用线型和填充时,注意保持设计的一致性和平衡。

CAD软件中的线型和填充图案技巧

CAD软件中的线型和填充图案技巧

CAD软件中的线型和填充图案技巧线型和填充图案是CAD软件中重要的功能,它们可以帮助用户更好地表达设计意图并增强绘图的可读性。

在本文中,我们将探讨CAD 软件中的线型和填充图案技巧,希望对使用CAD软件的人有所帮助。

一、线型技巧线型在CAD软件中用于绘制不同类型的线条,例如实线、虚线、点线等。

下面是一些常用的线型技巧:1. 切换线型:在CAD软件中,切换线型非常简单。

只需选择绘图工具,然后在属性面板中选择所需的线型即可。

有些CAD软件还提供了自定义线型的功能,用户可以根据需要创建自己的线型。

2. 调整线型比例:CAD软件中的线型比例可以用来调整线条的虚实程度。

用户可以根据实际情况调整线型比例,使线条看起来更加逼真或清晰。

3. 使用多种线型:CAD软件通常提供多个线型供用户选择。

为了使绘图更加清晰明了,可以在不同元素之间使用不同的线型,如实线表示边界,虚线表示构造等。

二、填充图案技巧填充图案在CAD软件中用于给封闭区域添加颜色或纹理效果,以增强设计的表现力。

以下是一些常用的填充图案技巧:1. 选择合适的图案:CAD软件通常提供了多种预设的填充图案供用户选择。

用户可以根据设计需求选择合适的填充图案,例如实体填充、网格填充、斜线填充等。

2. 自定义填充图案:有些CAD软件允许用户自定义填充图案。

用户可以使用软件提供的工具创建自己喜欢的填充图案,并将其应用于设计中的区域。

3. 调整填充比例:CAD软件中的填充比例功能可以用来调整填充图案的密度。

用户可以按照需要调整填充图案的比例,使其看起来更加逼真或清晰。

三、线型和填充图案技巧的应用实例以下是一些线型和填充图案技巧的应用实例,帮助读者更好地理解如何使用CAD软件绘制图形:1. 建筑设计:在建筑设计中,可以使用线型绘制建筑物的轮廓,并使用不同的线型表示不同的构造细节。

同时,可以使用填充图案给建筑物的内部空间添加纹理效果。

2. 机械设计:在机械设计中,可以使用线型表示零件的边界,并使用不同的线型表示不同的特征,如孔、螺纹等。

计算机图形学扫描线种子填充算法

计算机图形学扫描线种子填充算法

2.1 深度递归的种子填充算法
2.2 扫描线种子填充算法
2.1 深度递归的种子填充算法
种子填色又称边界填色(Boundary Filling)。 它的功能是,给出多边形光栅化后的边界位置及边 界色代码oundary_color,以及多边形内的一点(x, y)位置,要求将颜色fill_color填满多边形。
动画演示
扫描线种子填充算法特点
1. 该算法考虑了扫描线上象素的相关性,种子象 素不再代表一个孤立的象素,而是代表一个尚 未填充的区段。 2. 进栈时,只将每个区段选一个象素进栈(每个 区段最右边或最左边的象素),这样解决了堆 栈溢出的问题。 3. 种子出栈时,则填充整个区段。 4. 这样有机的结合:一边对尚未填充象素的登记 (象素进栈),一边进行填充(象素出栈), 既可以节省堆栈空间,又可以实施快速填充。

3. 已知有一个5边形如下。建立新边表 NET,并写出每一条扫描线经过时活性边 表AET中的数据状态。
X ΔX Ymax
第1项存当前扫描线与边的交点坐标x值; 第2项存从当前扫描线到下一条扫描线间x的增量Dx; 第3项存该边所交的最高扫描线号ymax; 第4项存指向下一条边的指针。
假定当前扫描线与多边形某一条边的交点的x 坐标为x,则下一条扫描线与该边的交点不要重计 算,只要加一个增量△x。(连贯性) 设该边的直线方程为:ax+by+c=0; 若y=yi,x=x i;则当y = y i+1时, x i+1=xi-b/a 其中ΔX= -b/a为常数, 另外使用增量法计算时,我们需要知道一条边 何时不再与下一条扫描线相交,以便及时把它从 活性边表中删除出去。
建立或调整AET(ActiveEdgeList);

如何在CAD中应用线宽和填充进行绘图

如何在CAD中应用线宽和填充进行绘图

如何在CAD中应用线宽和填充进行绘图CAD(计算机辅助设计)软件是一种广泛应用于工程和建筑设计领域的工具。

通过CAD软件,设计师可以将想法转化为精确的技术绘图,并通过模型、图纸和图形来实现设计。

在CAD中,线宽和填充是常用的功能,能够帮助我们更好地呈现和传达信息。

首先,让我们来介绍线宽的应用。

线宽是指线条的粗细程度,在CAD中,可以通过设定线宽来改变线条的显示效果。

使用线宽可以使设计图更加直观和易读。

在CAD软件中,有多种方法可以设定线宽,例如通过绘图命令、对象属性或图层管理器。

要设定线宽,你可以使用“LINEWEIGHT”命令,然后选择具体的线宽数值。

一般而言,0.00代表最细的线宽,而0.30代表较粗的线宽。

你可以根据具体情况选择合适的线宽来突出显示特殊对象或划定不同物体的边界。

另外,填充也是CAD中常用的功能之一。

填充可以给对象或图形添加颜色或纹理,以增强可视化效果。

在CAD软件中,填充可以用于各种用途,例如阴影、衬底、标记或区域定义。

要在CAD中应用填充,你可以使用“HATCH”命令或操作栏上的填充工具。

首先,你需要选择图形或区域,然后选择填充样式或纹理。

CAD软件提供了许多默认的填充样式,如实体、斜线、点状等,你也可以自定义填充样式以满足特定需求。

值得注意的是,填充对象必须是封闭的图形,否则填充将无法应用。

如果你的图形不是封闭的,你可以使用修复命令或绘制额外的线条来封闭图形,然后再应用填充。

在使用线宽和填充时,你还可以根据需要调整其显示属性。

CAD软件通常提供了线条颜色、线型和透明度等选项,使你可以根据设计需求进行定制。

通过这些属性选项,你可以进一步突出或弱化线条和填充的显示效果,以达到理想的效果。

总的来说,线宽和填充在CAD中是非常实用的功能。

通过合理运用线宽和填充,我们可以更好地展示设计意图,突出重点和细节。

当然,在实际操作中,还有许多其他CAD技巧和功能等待我们去探索和学习。

希望以上内容能对你在CAD绘图过程中的应用有所帮助。

在CAD绘图中合理使用线型和填充

在CAD绘图中合理使用线型和填充

在CAD绘图中合理使用线型和填充在CAD绘图中,合理使用线型和填充是非常重要的,它们能够帮助我们更好地展现设计,提高图纸的可读性和美观性。

本文将介绍一些关于线型和填充的使用技巧和注意事项。

首先,让我们来了解一下线型的使用。

在线型的选择上,我们需要考虑线的宽度和类型。

对于不同的元素或图层,选择合适的线型能够突出重点,提高图纸的可读性。

在选择线型时,一般有实线、虚线、点线等不同的类型可供选择。

实线一般用于表示实体物体边界,虚线常用于隐藏线和辅助线,点线则常用于标记和标尺。

除了线型的选择,我们还需要确定线的宽度。

线宽度的选择要根据图纸的比例来确定。

一般而言,线宽度在绘图的时候可以选择比较细的线,这样能够更好地显示细节。

而在打印或展示时,可以根据实际情况调整线的宽度,使其更加显眼。

另外,填充也是CAD绘图中常用的一种技巧。

填充可以用来突出某些区域,强调特定的设计元素。

在使用填充时,我们需要考虑填充颜色和填充图案的选择。

CAD软件一般提供了多种颜色和图案可以选择,可以根据实际需要进行调整。

在选择填充颜色时,一般要考虑和线的颜色搭配,使其更加协调美观。

在使用填充时,还需要注意填充的范围和方式。

一般来说,填充范围可以选择封闭区域,如圆形、矩形等形状,也可以手动选择多边形等复杂形状。

填充方式可以选择实心填充或渐变填充等,根据设计需要选择合适的方式。

除了线型和填充的使用,还有一些其他的技巧和注意事项需要注意。

首先,我们需要保持图纸的整洁和清晰,避免过度使用线型和填充,以免造成视觉的混乱和不必要的干扰。

其次,在使用线型和填充时,要保持一致性,尽量使用相同的线型和填充方式,这样能够使整个图纸更加统一和美观。

最后,我们还要注意线型和填充的打印效果,可以在打印前进行预览,调整线型和填充的显示效果。

总结起来,合理使用线型和填充是CAD绘图中的重要技巧之一。

通过选择合适的线型和填充方式,能够提高图纸的可读性和美观性,突出设计重点,表达设计意图。

CAD绘图技巧分享 线型与填充处理

CAD绘图技巧分享 线型与填充处理

CAD绘图技巧分享:线型与填充处理在AE软件中,线型与填充处理是进行CAD绘图时常用的功能。

线型可以用来标示不同的轮廓或边界,填充可以用来填充颜色或纹理。

本文将介绍一些线型与填充处理的技巧,帮助您更好地应用于CAD绘图中。

一、线型处理1.1 自定义线型AE软件默认提供了一些标准线型,但有时候我们需要自定义线型以适应特定的绘图要求。

在AE软件中,您可以通过以下步骤进行自定义线型的设置:步骤1:点击“线型处理”工具栏中的“自定义线型”按钮;步骤2:在弹出的对话框中,点击“新建”按钮创建一个新的线型;步骤3:在线型编辑器中,根据需要点击“添加线段”按钮添加线段,并设置线段的长度和间隔;步骤4:根据需要可以继续添加线段,最后点击“确定”按钮保存自定义线型。

1.2 线型样式除了自定义线型,您还可以调整线型的样式,使其更符合绘图需求。

在AE软件中,有以下几种常见的线型样式可供选择:实线:标识物体的常见边界,通过点击“实线”按钮即可应用。

虚线:常用于标识隐藏边界或构造线,通过点击“虚线”按钮即可应用。

点线:常用于标识尺寸线或其他特殊边界,通过点击“点线”按钮即可应用。

粗线:用于强调某些重要边界,通过在线型编辑器中设置线段的长度为较大值即可实现。

1.3 线型变换AE软件中的线型还可以进行变换,使绘图效果更加多样化。

以下是一些常见的线型变换技巧:线型旋转:点击“线型旋转”按钮,然后拖动鼠标即可实现线型的旋转效果。

线型缩放:点击“线型缩放”按钮,在线型缩放比例输入框中输入缩放比例,即可实现线型的缩放效果。

二、填充处理2.1 填充颜色在CAD绘图中,填充颜色常用于标示不同的区域或表示特定的材质。

在AE软件中,您可以通过以下步骤进行填充颜色的设置:步骤1:选中需要填充颜色的区域;步骤2:点击“填充颜色”按钮,在弹出的颜色选择器中选择需要的颜色;步骤3:点击“确定”按钮应用填充颜色。

2.2 纹理填充如果您需要使用纹理来填充区域,AE软件也提供了相关的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1^
0^
e5
10 7 -5/3
e3
11 12 0 ∧
e4
11 7 5/4 ∧
10 2 0 ∧
e6 e0
4 5 -1
e2
5 7 5/4 ∧
活化边表
Y=4
10
Y=5
10
e6
20
e6
20
e2
5 43/4 5/4 ∧
e3
11 12 0 ∧
活化边表的建立 有序边表
8^ 7^ 6^ 5^ 4^ 3^ 2^
1^
算出交点;划分区间;分配颜色。
问题一:扫描线与顶点相交时,交点个数的取舍?
0次 0次
9
8
交点的取舍: 比较交点与两边上其余
7 6
两顶点y值大小,确定交点个数取0、1、 5
2。
4
3
2
如果大于交点y值个数为2,则交点取 1
两次,该点填充。
0 0 1 2 3 4 5 6 7 8 9 10 11
1次
2次
注意: 1 边的分类; 2 边的排序(如果x坐标相 等,则按Δx排序); 3 边的结构;
8^
7
6
^ ^
5^
4
扫描 3
^ ^
线号 2 ^
1^
0^
e5
10 7 -5/3
e3
11 12 0 ∧
10 2 0 ∧
e6 e0
4 5 -1
e4
11 7 5/4 ∧
e2
5 7 5/4 ∧
活化边表的建立 通过有序边,利用边的连贯性建立活化
按上、下、左、右的顺序检查与出栈象素相邻 的四个象素,若其中某个象素不在边界上且未 置成多边形色,则把该象素入栈。
可用于填充带内孔的平面区域。
• 例 : 多 边 形 由 P0P1P2P3P4 构 成 , P0(1,5)P1(5,5)P2(7,3)P3(7,1)P4(1,1)
• 设种子点为(3,3),搜索的方向是上、 下、左、右。依此类推,最后像素被选 中并填充的次序如图中箭头所示 (画图)
(2)八向连通方法:指的是区域内每一个像 素,可以通过左、右、上、下、左上、右上、 左下、右下这八个方向的移动的组合来到达。
种子填充算法(四向算法):允许从四个方
向寻找下一象素,栈结构实现。 算法:种子象素入栈(先进后出),当栈非空时,
重复执行: 栈顶象素出栈; 将出栈象素置成多边形色;
如果大于交点y值个数为0,则交点取零次,该点不填充。
如果大于交点y值个数为1,则交点取一次。
问题二:多边形边界象素的取舍?
长方形面积S=(4-1)*(3-1)=6 按照扫描线填充算法填充后
为什么扩大化?
3 2 1
0 1234
S1=4*3=12
图形对象是用有限多个离散的像素表示, 图形有大小、面积,但是点只有位置, 而像素不仅有位置,还有大小。对于边 界象素全部填充造成扩大化。
——扫描线填充算法 针对采用点阵表示的多边形
从给定的位置开始图描着色直到达制定的边界 条件为止的区域填充算法,主要具有复杂情况的边 界情况。——种子填充算法
1、简单种子填充算法
基本原理:从多边形区域内部的一点出发找到区
域内的所有像素,常用于交互式绘图。
4
3
2
S1
1
0 012345
基本思路:程序开始,先检测该点的颜色,如果
e4
11 7 5/4 ∧
10 2 0 ∧
e6 e0
4 5 -1
e2
5 7 5/4 ∧
活化边表
Y=3
e0
4 3 -1
Y=4
e6
10 2 0
e2
5 38/4 5/4 ∧
ee2 0
45 432/4 5-/14 ∧
e2
5 43/4 5/4 ∧
活化边表的建立 有序边表
8^ 7^ 6^ 5^ 4^ 3^ 2^
d)将当前扫描线的纵坐标值y累加1,即y:=y+1。y的增加 e)若相对于当前扫描线,活化边表AEL非空,则将AEL中的
边两两依次配对,即1,2边为一对,3,4边为一对,依 次类推。每一对边与当前扫描线的交点所构成的区段位 于多边形内,依次对这些区段上的点(象素)按多边形 属性着色。象素填充
Polygonfill(polydef,color)
11 7 5/4
算法具体实现步骤
一、建立扫描线的有序边表(ET) 二、根据有序边表建立活化边表(AEL)
(1)取扫描线纵坐标y的初始值为ET中非空元素的最小序号。
(2)将扫描线的活化边表AEL设置为空。
(3)按从下到上的顺序对纵坐标值为y的扫描线(当前扫描 线)执行下列步骤,直到有序边表ET和活化边表AEL都 变成空为止。
通常是由一个封闭的轮廓来定义,处于一个封 闭轮廓线内的所有像素点即构成了一个区域。
例如:矩形、圆、椭圆、多边形等等。
区域---多边形
(凸、凹)、圆、 椭圆、带孔的。
区域填充---如何用一种颜色或图案
填充二维区域。
区域填充分两步:
确定需要填充那些像素
确定需要那些颜色值(图案)
9 8 7 6 5 4 3 2 1 0
5
0^
Y=1
e0 活化边表
4 5 -1
5
Y=2
e0
e4
7 5/4 ∧
e2
7 5/4 ∧
e2
7 5/4 ∧
e2
Y=3
4 4 -1
e0
4 3 -1
5 33/4 5/4 ∧
e2
5 38/4 5/4 ∧
活化边表的建立 有序边表
8^ 7^ 6^ 5^ 4^ 3^ 2^
1^
0^
e5
10 7 -5/3
e3
11 12 0 ∧
遍历AET表,把配对交点之间的区间(左闭右开)上的各象素(x,y),用
drawpixel(x,y,color)改写象素颜色值;
遍历AET表,把ymax=i的结点从AET表中删除,并把 ymin>I结点的x值递增dx;
若允许多边形的边自相交,则用冒泡排序法对AET表重新排序;
}
}/*Polygonfill*/
边结构
x D x LINK
上端点 当前扫描线 扫描线 y坐标 与边的交点 间x增量
原理:建立在图形的空间连贯性(边的连贯性)和扫描线的连贯性基
础上,计算图形封闭区域边界与扫描线交点,将扫描线分成区间,并对 区间进行填充。
算法:活化边表法 --
通过 单向链接表 的操作得
到扫描线与边的交点。
有序边表的建立
扫描线填充步骤
(1) 求交点,即计算扫描线与多 边形各边的交点。
(2) 排序,由于交点不一定由左 到右求出,因此将求出的交 点按 x 坐标值排序。
(3) 交点配对,1与2,3… …, 每对表示一个区间。
9
8
7
6
12
3
4
5
4
3
2
1
0 0 1 2 3 4 5 6 7 8 9 10 11
(4) 区间填充
“左闭右开”、“下闭上开”
3 2 1 0 1234
S2=3*2=6
2、扫描线填充算法具体实现
两个连贯性
扫描线的连贯性
当前扫描线与各边的交点顺序,与 下一条扫描线与各边的交点顺序很 可能相同或类似。
边的连贯性
9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9 10 11
xer= xdr + 1/kr yer= ydr + 1 kr为边的斜率 减少求扫描线和多边形各边的交点的计算量
缺点: (1) 有些象素会入栈多次,降低算法效率;
栈结构占空间。
(2) 递归执行,算法简单,但效率不高, 区域内每一象素都引起一次递归,进/出 栈,费时费内存。
改进算法,减少递归次数。 解决方法是用扫描线种子填充算法;
2、扫描线种子填充算法
–目标:减少递归层次 –适用于边界表示的4连通区域 算法思想:在任意不间断区间中只取一个种 子像素(不间断区间指在一条扫描线上一组 相邻像素),填充当前扫描线上的该段区间; 然后确定与这一区段相邻的上下两条扫描线 上位于区域内的区段,并依次把它们保存起 来,反复进行这个过程,直到所保存的个区 段都填充完毕。
二、边的结构
• 边的结构有四个域组成(除指针外顺序可以相互交换): • ymax 边的上端点的y坐标(y的最大值); • x 在ET中表示边的下端点的x坐标,在AEL中则表示边与扫 描线的交点的x坐标; • Δx 边的斜率的倒数(到下一条扫描线x的增量); • next 指向下一条边的指针。
y max
如何刻画多边形的边
一、边的分类
有序边—在当前扫描线第一次出现的边。
有序边表ET(Edge Table)—按有序边与扫描线交点x坐 标递增的顺序存放在一个链表中。仅对非水平边分析,对 应于一条扫描线。
活化边(活性边)—与当前扫描线相交的多边形的边。
活化边表(活性边表)AEL(Active Edge List)—按活化 边与扫描线交点x坐标递增的顺序存放在一个链表中。对 应于一条扫描线。
Int color; 多边形定义,polydef;
算法伪程序
{
for(各条扫描线I)
{
初始化新边表表头指针NET[i];
把 ymin=I的边放进表NET[i];
}
y=最低扫描线号;
初始化活化边表AET为空;
for(各条扫描线i)
{
把新边表NET[i]中的边结点用插入排序法插入AET表,使之按x坐标递增顺序排列;
它与边界色和填充色均不相同,就用填充色填充该点, 然后检测相邻位置,以确定它们是否是边界色和填充 色,若不是,就填充该相邻点。这个过程延续到已经 检测完区域边界范围内的所有像素为止。
相关文档
最新文档