2019精品第四部分多边形的扫描转换与区域填充教学课件数学

合集下载

第6讲 扫描转换与区域填充

第6讲 扫描转换与区域填充
8 7 6 5 4 3 2 P6(2,7) A F B P5(5,5) P3(11,3) P1(2,2) P2(5,1) 0 1 2 3 4 5 6 7 8 9 10 11 E C P4(11,8) G D
1
5 -3 P1P2
电子与信息工程学院 计算机科学与技术系
扫描线算法
●规则1:
X为小数,即交点落于扫描线上两个相邻像素之间
电子与信息工程学院 计算机科学与技术系
活性边表
8 7 6 5 4 3 2 P6(2,7) A F B P5(5,5) P3(11,3) P1(2,2) P2(5,1) 0 1 2 3 4 5 6 7 8 9 10 11 E C P4(11,8) G D
1
扫描线为6的活性表
P6P1 2 0 7 P5P6 3.5 -1.5 7 P4P5 7 2 8 P3P4 11 0 8
(a)交点位于左边之上,向右取整 (b)交点位于右边之上,向左取整
电子与信息工程学院 计算机科学与技术系
扫描线算法
●规则2:
边界上象素的取舍问题,避免填充扩大化。
●解决方法:
边界象素:规定落在右上边界的象素不予填充。
具体实现时,只要对扫描线与多边形的相交区间左闭右开
电子与信息工程学院 计算机科学与技术系
然后将该颜色扩展到整个区域的过程。
区域填充算法要求区域是连通的。
电子与信息工程学院 计算机科学与技术系
区域的连通性
四连通:从区域内一点出发,可通过 四个方向:上、下、左、右到达该区 域内部的任意象素。 八连通:区域内部从一个象素到达另 一个象素的移动路径,除了上、下、 左、右四个方向外,还允许沿着对角 线方向。
A
△ x y ma x

第4章 多边形的扫描转换与区域填充

第4章 多边形的扫描转换与区域填充
的象素臵成背景色。
4.2.2 扫描线填充算法
三、存在问题
交点的个数必须是偶数才能保证填充的正确性。 存在问题: 当扫描线与多边形的顶点相交时,会出现异常情况。 问题1:如何取舍交点,保证交点正确配对?
扫描线2 与P1相交,P1,P1,E 扫描线7 与P6相交,P6,F,G
4.2.2 扫描线填充算法
4.1 矩形填充
为了减少函数调用的次数,每条扫描线上的[xmin,xmax]区间可 以用画线函数填充,其程序如下:
4.1 矩形填充
存在问题: 如果两个矩形共享一条边:
(1)如果象素的中心落在某个矩形区域内,则它属于该区域。 (2)如果将中心落在其共享边界的像素看成是同时属于两个矩形 图元区域,那么,落在共享边界上的像素就会被重画两次。 (3)如果将中心落在其共享边界的像素看成是不属于任何区域, 那么,中心落在共享边界上的像素就会被丢失。
处理措施:
如果像素的中心落在矩形边界的左方或下方时,该像素属于矩形, 否则不属于该多边形区域,也就是说,如果象素的中心落在矩形 边界的右方或上方时,该象素不属于矩形区域。
4.2 多边形扫描转换
4.2.1 逐点判断算法
基本思想:
逐个判断绘图窗口内的像素,确定它们是否在多边形区
域内部,从而求出位于多边形区域内的像素的集合。实现 扫描转换多边形最简单方法就是逐点判断。
实际上该数据表示了一条扫描线与某条边的交点,将这些交点链接 起来,就可以直接得到要求的所有交点。在填充过程中,为每一条 扫描线建立相应的活性边表,它表示了该扫描线要求交点的那些边, 在实用中每一条边的活性边表的信息与上一条边的活性边表的信息 有继承性,再结合ET表使得建立十分方便。
4.2.2 扫描线填充算法

【正式版】计算机图形学多边形的扫描转换PPT文档

【正式版】计算机图形学多边形的扫描转换PPT文档

2点的处理原则 P2是边P3P2的终点,同时也是边P2P1的起点。 按照“下闭上开”的原则,可以自动处理。
y
13
P1
12
11
10
9
8
7 P2
6
5
4
3
2
1
P3
P0
P4
P6
P5
O
1 2 3 4 5 6 7 8 9 10 11 12 13
x
图4-10 局部点的处理
0、P3、P5点和P4点的处理原则
扫描线与多边形的顶点相交时,交点的取舍,保证交 点正确配对。
扫描线算法
基本思想:
按扫描线顺序,计算扫
描线与多边形的相交区 y
间,再用要求的颜色显 8
示这些区间的象素,即 完成填充工作。
对于一条扫描线填充过程可 以分为四个步骤:
7 P5 6 5 4 I1 3
I2 P4
P3 I3 I4
扫描线5
2
扫描线2
(1)求交:I4, I3, I2,I1
1 P1
P2
有效边上的扫描线由起点到终点每次加1,即像素 点的y坐标为:y=y+1,x坐标的变化可以按如下方 法推导。
解决方法:
检查两相邻边在扫描线的哪一侧。
只要检查顶点的两条边的另外两个端点的Y值,两个Y值
中大于交点Y值的个数是0,1,2,来决定取0,1,2个
交点。
P1 1
P2
2
3
P3 P4
4.2.3 有效边和有效边表
1.有效边 多边形内与当前扫描线相交的边称为有效边。
在处理一条扫描线时仅对有效边进行求交运算,可以 避免与多边形的所有边求交,提高了算法效率。
P4

19.4综合与实践--多边形镶嵌课件沪科版.ppt

19.4综合与实践--多边形镶嵌课件沪科版.ppt

(一)正三角形的平面镶嵌
60° 60° 60°
60° 60°
60°
6个正三角形可以镶嵌
(二)正方形的平面镶嵌
90°
4个正方形可以镶嵌
(三)正六边形的平面镶嵌 3个正六边形可以镶嵌
(四)用边长相同的正五边形能否镶嵌?
13
2
∠1+∠2+∠3=?
思考:
为什么边长相等的正五边形不能 镶嵌,而边长相等的正六边形能 镶嵌?
要用图形不留空隙、不重叠地镶嵌 一个平面区域,需使得拼接点处的 所有内角之和等于360°.
还有其它正多边形能镶嵌吗?
还能找到能镶嵌的其他正多边形吗?
设在一个顶点周(n围-2有)×k 1个8正0。n k·
边形的角,则有
。 = 360
n
(n-2)(k-2)=4
∵ k 为正整数, n 为大于等于 3 的正整数
• 3、Patience is bitter, but its fruit is sweet. (Jean Jacques Rousseau , French thinker)忍耐是痛苦的,但它的果实是甜蜜的。11:038.5.202011:038.5.202011:0311:03:108.5.202011:038.5.2020
• •
谢谢观看 12、Treat other people as you hope they will treat you.你希望别人如何对待你,你就如何对待别人。11时3分11时3分5-Aug-208.5.2020
13、To do whatever needs to be done to preserve this last and greatest bastion of freedom. (Ronald Reagan , American President ) 为了保住这最后的、最伟大的自由堡垒,我们必须尽我们所能。

计算机图形学(多边形的扫描转换)ppt课件

计算机图形学(多边形的扫描转换)ppt课件

多边形的扫描转换过程,实际上是给多边形包围的区域着色的过程
2014-2015-1:CG:SCUEC
33
为什么研究图形的扫描转换与区域填充?
与单纯由线条所构成的线画图形相比,采用面着色绘制的 光栅图形显得更为生动、直观,真实感更强
哪个长方形在前,哪个在后? 哪个长方形在前,哪个在后?
面着色可以使使光栅图形的画面明暗自然,色彩丰富,形象 逼真,具有真实感
计算机图形学
第三章 基本光栅图形算法
1
本章内容
1
直线的扫描转换
2
圆的扫描转换
3
多边形的扫描转换
4
区域填充
5 光栅图形的反走样算法
2014-2015-1:CG:SCUEC
22
多边形的扫描转换
多边形的表示方法
– 顶点表示: 用多边形的顶点序列来刻 划多边形
• 该表示方法几何意义强、占内存少
P1 P3
yi+1
y = yi yi-1
Pi
yi+1 y = yi
yi-1 Pi
非极值点的处理
2014-2015-1:CG:SCUEC
15 15
算法的实现步骤
对于每一条扫描线,多边形的扫描转换可分为以下4步:
1 求交点:计算扫描线与多边形各边的交点,设交点个 数为n。
2 交点排序:把所有的交点按x值递增的顺序进行排列。 3 交点配对:将排序后的第1个与第2个交点,第3个与第
设多边形某一条边的方程为 ax by c 0,当前扫描线 y yi
与该边的交点坐标为 (xi , yi ),则下一条扫描线 y yi1与该边
的交点 (xi1, yi1)不需要重新计算,只要加一个增量 x即可。 因为此时有

计算机图形学5多边形扫描转换和区域填充

计算机图形学5多边形扫描转换和区域填充
这些属性独立于填充模式或填充颜色而设置这些属性独立于填充模式或填充颜色而设置且它们提供与且它们提供与线属性参数线属性参数线型线型线宽和线颜色线宽和线颜色相同的选择相同的选择也就是说也就是说可以以点线或划线可以以点线或划线宽或扁以及任何可用的颜色宽或扁以及任何可用的颜色来显示区域的边来显示区域的边而不必考虑怎样填充区域而不必考虑怎样填充区域
多边形分为凸多边形、凹多边形、含内环的多边 形等:
(1)凸多边形 任意两顶点间的连线均在多边形内。
(2)凹多边形
任意两顶点间的连线有不在多边形内的部分。
凸多边形
凹多边形
含内环的多边形
有关概念
1) 区域:一组相邻而且又相连的像素,而且具有 相同属性的封闭区域。 2)种类:①单域 ②复合域
3) 区域填充:以某种属性对整个区域进行设置的过 程。
另外使用增量法计算时,我们需要知道一条边何时不再与下 一条扫描线相交,以便及时把它从有效边表中删除出去,避免 下一步进行无谓的计算。 综上所述,有效边表AET的每个结点存放对应边的有关信息 如下:
x
△x
ymax
next
其中x为当前扫描线与边的交点,ymax是边所在的最大扫描 线值,通过它可以知道何时才能“抛弃”该边,△x表示从 当前扫描线到下一条扫描线之间的x增量即斜率的倒数。 next为指向下一条边的指针
P6(2,7)
P4(11,8) F G B P5(5,5) P3(11,3) C D
A
1
0 1
P1(2,2) P2(5,1) 2 3 4 5 6 7
E
8
9
10
11
一个多边形与若干扫描线
7
把多边形所有 的边全部填成这 样的结构,插到 这个指针数组里 面来。

《多边形填充》课件

《多边形填充》课件

常见填充算法
扫描线填充算法
通过扫描多边形区域的水平线,确定交点并填充像素。
边界填充算法
从多边形边界的某个点开始,沿着边界推进并填充内部像素。
种子填充算法
通过指定一个种子点,从该点开始向外扩散填充区域。
实例演示
三角形填充
使用扫描线算法和渐变色填充 一个三角形区域。
棋盘格填充
使用边界填充算法和黑白相间 的格子填充一个矩形区域。
纹理填充
使用种子填充算法和一张纹理 图像填充一个复杂的多边形区 域。
填充的应用领域
1 计算机游戏
2 动画制作
填充用于渲染游戏道具、 人物模型和背景场景, 增强游戏画面的真实感。
填充可以给动画中的形 状和物体添加色彩和纹 理,使其栩栩如生。
3 虚拟现实
填充用于在虚拟现实环 境中创建逼真的场景和 对象,增强用户的沉浸 感。
总结和展望
通过本课件的学习,您应该对多边形填充有了更深入的理解。希望您能够将这些知识应用到实际项目中, 并继续探索计算机图形学的更多领域。
填充的定义和作用
填充是将颜色、纹理或图案应用到多边形的过程。它可以增强图形的视觉效 果,使其更加生动、丰富和有吸引力。填充还可以区分多边形之间的空间, 帮助观察者更好地理解和解读图形。
填充的基本原理
填充的基本原理是确定多边形内的像素点,并为这些像素点分配相应的颜色 或纹理。常用的填充算法包括扫描线填充算法和边界填充算法。
《多边形填充》PPT课件
本课件将介绍多边形填充的背通过实例演示帮助理解。最后,将探讨填充的应用领域,并进 行总结和展望。
背景和介绍
多边形填充是计算机图形学中的重要概念,用于给封闭的多边形区域添加颜 色或纹理。它在许多领域中都有广泛的应用,包括计算机游戏、动画制作和 虚拟现实等。

多边形的扫描转换和区域填充技巧

多边形的扫描转换和区域填充技巧

如何进行多 边形填充?
2020/1/21
20/82
Scan-Line Polygon-Filling
Determine the intersection positions of the region boundaries with the scan lines
Apply fill colors to each section of a scan line that lies inside the fill region (odd-even rule)
2020/1/21
ห้องสมุดไป่ตู้
提出问题
上一章讲述了如何生成点、线和圆等 基本几何构造。
本章重点如何在指定的输出设备上构 造多边形域、像素数组等高级图元
2020/1/21
2/82
主要内容 主要内容
矩形填充 内外测试 多边形扫描转换 区域填充 多边形扫描转换与区域填充的区别 反走样
ymax
2020/1/21
ymin xmin
xmax
6/82
2020/1/21
ymax
ymin 如何完成填充
的?? xmin
xmax
如何实现算法??
ymax
填充前 填充后
ymin xmin
xmax
7/82
矩形扫描转换算法
FillRect(Rect *rect, int color) { int x,y; for (y=rect->ymin;y<=rect->ymax,y++)
2020/1/21
26/82
填充步骤
(1)求交点 (2)交点排序
如何 高(3)效交点率配对 求交(4点)区?间填色

多边形的扫描转换与区域填充

多边形的扫描转换与区域填充

多边形的扫描转换与区域填充在计算机图形学中,多边形有两种重要的表示方法:顶点表示和点阵表示。

顶点表示是用多边形的顶点序列来表示多边形。

这种表示直观、几何意义强、占内存少,易于进行几何变换,但由于它没有明确指出哪些象素在多边形内,故不能直接用于面着色;点阵表示是用位于多边形内的象素集合来刻画多边形。

这种表示丢失了许多几何信息,但便于帧缓冲器表示图形,是面着色所需要的图形表示形式。

光栅图形的一个基本问题是把多边形的顶点表示转换为点阵表示,这种转换称为多边形的扫描转换。

区域填充则是指先将在点阵表示的多边形区域内的一点(称为种子点)赋予指定的颜色和灰度,然后将这种颜色和灰度扩展到整个区域内的过程。

多边形的扫描转换多边形扫描转换算法对多边形的形状没有限制,但多边形的边界必须时封闭的,且不自交。

我们可以将多边形分为三种:凸多边形、凹多边形、含内环的多边形。

所谓凸多边形是指任意两顶点间的连线均在多边形内;凹多边形是指任意两顶点间的连线有不在多边形内的部分;而含内环的多边形则是指多边形内再套有多边形,多边形内的多边形也叫内环,内环之间不能相交。

多边形的扫描转换与区域填充扫描线算法:扫描线算法是按扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的象素,完成转换工作。

区间的端点可以通过计算扫描线与多边形边界线的交点获得。

对于一条扫描线,多边形的扫描转换过程可以分为四个步骤:(1)求交:计算扫描线与多边形各边的交点;(2)排序:把所有交点按x值递增顺序排序;(3)配对:第一个与第二个,第三个与第四个等等;每对交点代表扫描线与多边形的一个相交区间,(4)着色:把相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景色。

图2.3.2 一个多边形与若干扫描线为了提高效率,在处理一条扫描线时,仅对与它相交的多边形的边进行求交运算。

我们把与当前扫描线相交的边称为活性边,并把它们按与扫描线交点x坐标递增的顺序存放在一个链表中,称此链表为活性边表(AET)。

第四讲 区域填充

第四讲 区域填充

点阵字符:存储量大,易于显示
矢量字符:存储量小,美观,变换方便; 但需 要光栅化后才能显示。
字符属性
字体 宋体 仿宋体 楷体 黑体 隶书
字高 宋体 宋体 宋体 宋体
字宽 大海 大海 大海 大海
字倾斜角
倾斜 倾斜
对齐 (左对齐、中心对齐、右对齐)
字色 红色、绿色、蓝色
条件:需提供多边形各顶点的坐标及填充色或图案
扫描线算法
扫描线算法
目标:利用相邻像素之间的连贯性,提高算 法效率 处理对象:非自交多边形 (边与边之间除 了顶点外无其它交点)
(1) 边的相关性及边记录 算法首先要求出扫描线与边界的交点
已知扫描线yi与AB边的交点是(xi,yi)则:
(1) 边的相关性及边记录 yi+1=yi+1, xi+1=xi+1/m m是这条边的斜率 m=1/dx 设ax+by+c=0 (1) 则 斜率m=-b/a 由(1)有 xi+1=-1/a(byi+1+c) 同时 yi+1=yi+1 则 xi+1=-1/a(b(yi+1)+c)=-1/a(byi +c)-b/a
条件: 要求给出边界颜色特征及区域内的一个点,并要 求区域是连通的
区域:分为4连通区域和8连通区域
四个方向运动 八个方向运动
表示内点
四连通区域 八连通区域
67 5 4S9
328
表示边界点
区域连通方式对填充结果的影响
4连通区域边界填 充算法的填充结果
8连通区域边界填 充算法的填充结果
常见的种子填充算法由边界表示的四连通区域种子填充算 法、内点表示的四连通区域种子填充算法、边界表示的八连通 区域种子填充算法、内点表示的八连通区域种子填充算法。

第四章 多边形填充课件

第四章  多边形填充课件

导。
(x1,y1)
(xi+1,yi+1)
(xi,yi) 1
1/k (x0,y0)
有效边交点相关性
2.有效边表
x
ymax
1/k
next
有效边表结点
class CAET
{
public:
CAET ();
virtual ~ CAET ();
public:
double x;
int
yMax;
double
k;
//
4.2 有效边表填充算法
4.2.1 填充原理
有效边表填充算法通过维护边表和有效边表,避开了 扫描线与多边形所有边求交的复杂运算。填充原理是按 照扫描线从小到大的移动顺序,计算当前扫描线与有效 边的交点,然后把这些交点按x值递增的顺序进行排序、 配对,以确定填充区间,最后用指定颜色填充区间内的 所有像素,即完成填充工作。有效边表填充算法已成为 目前最为有效的多边形填充算法之一。
高端 P[i]
高端 j=i+1 P[j]
xi+1=xi+1/k xi
低端
P[j] J=i+1
x= P[j] .x ymin= P[j] .y ymax= P[i] .y
低端
P[i]
x= P[i] .x ymin= P[i] .y ymax= P[j] .y
y++
扫描线
x
} }
for(y=ymin;y<ymax;y++)//沿每一条边循环扫描线 {
2.算法原理
种子填充算法一般要求区域边界色和填充色不同, 输入参数只有种子坐标位置和填充颜色。种子填充算法 一般需要使用堆栈数据结构来实现。

多边形的转换及区域填充课件

多边形的转换及区域填充课件

18

区域的连贯性
结论:
根据这些性质,实际上只需知道该长方形区域内 任一梯形内一点关于多边形P的内外关系后,即可 确定区域内所有梯形关于P的内外关系。
19

扫描线的连贯性
设e为一整数,yi0≥e≥yin。若扫描线y=e与多 边形P的Pi-1Pi相交,则记其交点的横坐标为xei。
以上交点的横坐标递增排序得到的序列称为交
15

扫描线算法
基本思想
对于一个给定的多边形,用一组水平或垂直的扫 描线进行扫描,分别求出每条扫描线与多边形的 交点,这些交点将扫描线分割为相间排列的落在 多边形内和多边形外的线段,将落在多边形内的 所有线段上的每个像素点赋以给定的多边形填充 色。
利用相邻象素之间的连贯性填充每一条扫描线位 于多边形内部的区段。
1

内容
基本概念 扫描转换矩形 扫描转换多边形 区域填充 光栅图形的反走样
2

基本概念
多边形有两种重要的表示方法
顶点表示
用多边形的顶点序列来表示多边形。这种表示直观、 几何意义强、占内存少,易于进行几何变换,但由 于它没有明确指出哪些象素在多边形内,故不能直 接用于面着色
点阵表示
活性边(active edge)
与当前扫描线相交的边;
活性边表(AET--Active edge table)
将活性边按与扫描线交点x坐标递增的顺序存入一 个链表中,它记录了多边形边沿扫描线的交点序列。
每条扫描线对应一个活性边表。
只需对当前扫描线的活性边表作更新,即可得 到下一条扫描线的活性边表。
30

扫描线算法-数据结构
AET AET
(扫描线6的活性边表 ) (扫描线7的活性边表)

第四章 区域填充_应用

第四章 区域填充_应用
具体实现时,只要对扫描线与多边形的相交区间左闭右开
图4-2-5
4.2.1 扫描线算法
规则3: 扫描线与多边形的顶点相交时,交点的取舍,保证交点正 确配对。 解决方法: 检查两相邻边在扫描线的哪一侧。 只要检查顶点的两条边的另外两个端点的Y值,两个Y值 中大于交点Y值的个数是0,1,2,来决定取0,1,2个交点。
方法:
void FillRectangle(Rectangle *rect,int color) { int x,y; for(y = rect->ymin;y <= rect->ymax;y++) for(x = rect->xmin;x <= rect->xmax;x++) PutPixel(x,y,color); }/*end of FillRectangle() */
4.2.2区域的连贯性
设多边形P的顶点Pi=(xi,yi),i=0,1, …,n,又设 yi0,yi1,…yin是各顶点Pi的坐标yi的递减数列,即 yik≥yik+1,0≤k≤n-1。这样,当yik≥yik+1,0≤k≤n-1 时,屏幕上位于y=yik和y=yik+1两条扫描线之间的长方形 区域被多边形P的边分割成若干梯形(三角形可看作其中 一底边长为零的梯形),它们具有下列性质:
图4-2-15
4.2.5数据结构与实现步骤
算法基本思想:首先取d=yin。容易求得扫描线y=d 上的交点序列为xdj1,xdj2,…xdjn ,这一序列由位于 扫描线y=d上的多边形P的顶点组成。 由yin的交点序列开始,根据多边形的边的连贯性, 按从上到下的顺序求得各条扫描线的交点序列;根据 扫描线的连贯性,可确定各条扫描线上位于多边形P内 的区段,并表示成点阵形式。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章多边形的扫描转换 与区域填充
4.1多边形扫描转换 4.2区域填充
4.1多边形的扫描转换
• 多边形分为凸多边形、凹多边形、含内环的多 边形。
4.1多边形的扫描转换
• 多边形的表示方法
–顶点表示
–点阵表示
• 顶点表示:用多边形顶点的序列来刻划多边形。 直观、几何意义强、占内存少;不能直接用于 面着色。
扫描线的连贯性
1)设L是偶数。 2)在该扫描线上,只有区段
(xeik,xeik+1),k=1,3,5,…,L-1位于多边形P内, 其余区段都在P外。
以上性质称为扫描线的连贯性,它是多边形 区域连贯性在一条扫描线上的反映。
边的连贯性
设d为一整数,并且d=e-1,并且 yi0≥d≥yin。设位于 扫描线y=d上的交点序列为xdj1,xdj2,xdj3,…,xdjk
现在来讨论扫描线d,e交点序列之间的关系。若多 边形P的边Pr-1Pr与扫描线y=e,y=d都相交,则交点序列 中对应元素xer,xdr满足下列关系:
xer= xdr + 1/mr (1) 其中mr为边Pr-1Pr的斜率。
y=e y=d
边的连贯性
于是,可利用d的交点序列计算e的交点序列,即 先运用递推关系式(1)求得与扫描线y=e和y=d 都相交的所有多边形上的交点xer,再求得与扫 描线y=d不相交但与扫描线y=e相交的所有边 PqPq+1上的交点xeq。如果P的顶点的坐标是整数, 那么xeq=xq或xeq=xq+1,然后把这两部分按递增的 顺序排列,即可得e的交点序列。
奇点的处理
• 若奇点做一个交点处理,则情况A,交点 个数不是偶数。
• 若奇点做两个交点处理,则情况B,交点 个数不是偶数。
奇点的处理
• 多边形P的顶点可分为两类:极值奇点和非极 值奇点。如果(yi-1 - yi)(yi+1 - yi)≥0,则称 顶点Pi为极值点;否则称Pi为非极值点。
具体实现时,只要对扫描线与多边形的相交区间左闭右开
扫描线算法
●规则3:
扫描线与多边形的顶点相交时,交点的取舍,保证交点正 确配对。
●解决方法:
检查两相邻边在扫描线的哪一侧。 只要检查顶点的两条边的另外两个端点的Y值,两个Y值
中大于交点Y值的个数是0,1,2,来决定取0,1,2个交点。
扫描线算法
扫描线算法是多边形扫描转换的常用算法。 与逐点判断算法相比,扫描线算法充分利用了相 邻象素之间的连贯性,避免了对象素的逐点判断 和反复求交的运算,达到了减少了计算量和提高 速度的目的。
• 假定非水平边与扫描线y=e 相交,交点的横坐标为x, 规则如下
扫描线算法
●规则1:
X为小数,即交点落于扫描线上两个相邻像素之间
(a)交点位于左边之上,向右取整 (b)交点位于右边之上,向左取整
扫描线算法
●规则2:
边界上象素的取舍问题,避免填充扩大化。
●解决方法:
边界象素:规定落在右上边界的象素不予填充。
–两种方法:扫描线算法;边界标志法。
扫描线算法
• 扫描线算法
–目标:利用相邻像素之间的连贯性,提高 算法效率
–处理对象:非自交多边形 (边与边之间除 了顶点外无其它交点)
扫描线算法
–交点的取整规则
• 要求:使生成的像素全部位于多边形之内 –用于线画图元扫描转换的四舍五入原则导致 部分像素位于多边形之外,从而不可用
开发和利用相邻象素之间的连贯性是光栅图 形算法研究的重要内容。扫描转换算法综合利用 了区域的连贯性、扫描线连贯性和边的连贯性等 三种形式的连贯性。
区域的连贯性
设多边形P的顶点Pi=(xi,yi),i=0,1, …,n,又设 yi0,yi1,…yin 是各顶点Pi的坐标yi的递减数列,即yik≥yik+1,0≤k≤n-1 这样,当yik≥yik+1,0≤k≤n-1时,屏幕上位于y=yik和 y=yik+1两条扫描线之间的长方形区域被多边形P的边分割 成若干梯形(三角形可看作其中一底边长为零的梯形), 它们具有下列性质:
y=yik
y=yik+1
区域的连贯性
1)梯形的两底边分别在y=yik和y=yik+1两条扫描线上,腰 在多边形P的边上或在显示屏幕的边界上。
2)这些梯形可分为两类:一类位于多边形P的内部;另 一类在多边形P的外部。
3)两类梯形在长方形区域{yik,yik+1}内相间的排列,即 相邻的两梯形必有一个在多边形P内,另一个在P外。
y=yik
y=yik+1
区域的连贯性
根据这些性质,实际上只需知道该长方形 区域内任一梯形内一点关于多边形P的内 外关系后,即可确定区域内所有梯形关 于P的内外关系。
扫描线的连贯性
设e为一整数,yi0≥e≥yin。若扫描线y=e与多边形P的 Pi-1Pi相交,则记其交点的横坐标为xei。
现设xei1,xei2,xei3,…,xeil 是该扫描线与P的边界各交 点横坐标的递增序列,称此序列为交点序列。由区域的连 贯性可知,此交点序列具有以下性质:
这样,运用递推关系式(2)可直接由d的交点序列 和e的获得e的交点序列。
以上性质称为边的连贯性,它是区域的连贯性在 相邻两扫描线上的反映。
Байду номын сангаас
奇点的处理
•当扫描线与多边形P的交点是P的顶点时,则称该 交点为奇点。 •以上所述多边形的三种形式的连贯性都基于这样 的几何事实:每一条扫描线与多边形P的边界的交 点个数都是偶数。但是如果把每一奇点简单地计为 一个交点或者简单地计为两个交点,都可能出现奇 数个交点。那么如果保证交点数为偶数呢?
• 点阵表示:用位于多边形内的象素的集合来刻 划多边形。失去了许多重要的几何信息;便于 运用帧缓冲存储器表示图形,易于面着色。
4.1多边形的扫描转换
–多边形的扫描转换:把多边形的顶点表示转 换为点阵表示,也就是从多边形的给定边界 出发,求出位于其内部的各个象素,并给帧 缓冲器内的各个对应元素设置相应的灰度和 颜色,通常称这种转换为多边形的扫描转换。
y=e y=d
边的连贯性
特别是当存在某一个整数k,0≤k≤n-1,使得 yik>e, d>yik+1
成立时,则由区域的连贯性可知d的交点序列和e 的交点序列之间有以下关系: 1)两序列元素的个数相等,如上图所示。 2)点(xeir,e)与(xdjr,d)位于多边形P的同一 边上,于是 xeir= xdjr + 1/kjr (2)
相关文档
最新文档