【学习课件】第3章基本图形生成算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ppt课件
21
区域连通方式对填充结果的影响
4连通区域边界填 充算法的填充结果
8连通区域边界填 充算法的填充结果
pptHale Waihona Puke Baidu件
22
简单的种子填充算法 (4连通边界)
缺点:
对复杂图形,每一像素可能被访问多次,输 入/输出量大
图形输出不能与扫描同步进行,只有全部画
完才能打印
ppt课件
19
栅栏填充算法 (Fence Fill Algorithm)
栅栏线
P5
P5
P3
P4
P1
P2
P1
(a)
P5 P3
P4
P1
P2
(d)
P3 P4 P4
P5 P3
P4
P2
(b)
P5
P1
排序:I1, I2, I3, I4
交点配对:(I1, I2), (I3, I4)
区间填色
ppt课件
9
填充扩大化问题 解决方法:
y
7
6
5 P4
P3
4
3
2 P1
P2
1
0 1234567 x
y 7 6 5 4 3 2 1
0 1234567 x
取中心扫描线y+0.5
检查交点右方像素的中心是否落在区间内
xl≤x+0.5≤xr
y
7
6
P4
P3
5
4
3
2 P1
P2
1
ppt0课件1 2 3 4 5 6 7 x
y 7 6 5 4 3 2 1
0 1 2 3 4 5 6107 x
顶点交点的计数问题
P3 I5
5
4
I4 P4
3
2
I1
I2
1
P5
0
P1 I6
扫描线5
扫描线4
扫描线3
I3
扫描线2
扫描线1 P2
计数0次 计数1次 计数2次
ppt课件
14
y
P4
8 P6 7
6
P5
5
4
3
P3
2 1
P2
P2
0 1 2 3 4 5 6 7 8 9 10 11
活性边表 P1P2
y=1.5 5 -3 2 .
8.5 ∧

7.5 6.5
∧ ∧
边 5.5
表 4.5 ∧
3.5
2.5
1.5
x 0.5 ∧
P2P3
5 33∧
P4P5
528 .
P5P6
5 -1.5 7 ∧
实区域填充算法
哈尔滨工业大学计算机学院 苏小红
ppt课件
1
实区域填充算法
解决的主要问题是什么? 确定待填充的象素,即检查光栅的每一像素是 否位于多边形区域内 图案填充还有一个什么象素填什么颜色的问题 曲线围成的区域,可用多边形逼近
ppt课件
2
点在多边形内的包含性检验
检验夹角之和 射线法检验交点数
检查交于该顶点的两条边的另外两个端点 的y值大于该顶点y值的个数
ppt课件
11
有序边表算法
影响一般扫描线填充算法效率的因素?
求交和排序
把多边形所有边放在一个表中,按顺序取出, 分别计算与每条扫描线的交点? 如何提高效率? 目标是简化交点计算
建立每条扫描线的活性边表
何谓活性边?
ppt课件
12
有序边表算法
ppt课件
7
实区域填充算法分类
扫描线填充算法
扫描线顺序
种子填充算法
内部一个点出发
ppt课件
8
扫描线填充算法
y
利用图形的空间连贯性 8
和扫描线的连贯性
7 P5 6 5
I1 4 3
I2 P4
P3 I3 I4
扫描线5
2
扫描线2
1 P1
P2
求交:I4, I3, I2, I1
0 1 2 3 4 5 6 7 8 9 10 x
step3:遍历AET表,把Ymax=i的结点从AET表中删除,并把 Ymax>i的结果点的X值递增△X;
step4:重复各扫描线
ppt课件
16
有序边表算法
优点:
对每个像素只访问一次 与设备无关
缺点:
数据结构复杂 只适合软件实现
ppt课件
17
边填充算法 (Edge Fill Algorithm)
z
z
A
B
B P
x
A P
x
当T<0时,AP斜率>BP斜率,为顺时针角 当T>0时,AP斜率<BP斜率,为逆时针角
ppt课件
5
射线法检验交点数
z
x
P
E
A
E
A
P
B
B
左闭右开
D
D
C
C
交点数=偶数(包括0) 交点数=奇数
点在多边形之外
点在多边形之内
ppt课件
6
逐点测试效率低不实用怎么办?
包围盒法
凸多边形
凹多边形
P5
P5
P3
P4
P1
P2
P1
(a)
P5 P3
P4
P1
P2
(d)
P3 P4
(b)
P2 P5
P1
P5 P3
P4
P1
P2
(c)
P3 P4
P2
(e)
ppt课件
18
边填充算法 (Edge Fill Algorithm)
优点:
最适合于有帧缓存的显示器
可按任意顺序处理多边形的边
仅访问与该边有交点的扫描线上右方的像素, 算法简单
活性边表的建立
结点信息
x:当前扫描线与边的交点
△x:从当前扫描线到下一条扫描线之间的x增量
ymax:边所交的最高扫描线号
活性边表的更新
△x =1/k
新边插入
旧边删除
ppt课件
13
有序边表算法
对每条扫描线建立一个新边表 结点信息
x0:扫描线与边的初始交点 △x:从当前扫描线到下一条扫描线之间的x增量 ymax:边所交的最高扫描线号 边结点不必排序
11 0 8 ∧ P3P4
2 0 7 ∧ P6P1
5 -3 2 .
P1P2
5 33∧
P2P3
y=2.5
P6P1 207 .
P2P3
8 33∧
y=3.5 y=5.5
P6P1
207 .
P6P1
207 .
P3P4
11 0 8 ∧
P5P6
5 -1.5 7
P4P5
528 .
P3P4
11 0 8 ∧
y=6.5
P6P1
P2
(c)
P3 P4
P1
P2
(e)
引入栅栏的目的?
ppt课件
20
种子填充算法
假设多边形区域内至少有一个像素已知
区域定义法:
Interior-defined Boundary-
defined
Flood-fill algorithm Boundary-fill algorithm
区域连通方式:
4-connected 8-connected
ppt课件
3
检验夹角之和
A
A
P
B
E
E B
P
D
D
C
C
若夹角和为0,则点p在多边形外 若夹角和为360°,则点p在多边形内
ppt课件
4
夹角如何计算?
大小:利用余弦定理 方向:令
T x A x P x B x P
z z B A z z P P (x A x P )z B ( z P ) (x B x P )z A ( z P )
P5P6
2 0 7 . 3.5 -1.5 7
P4P5
728 .
P3P4
11 0 8 ∧
P4P5
P3P4
y=7.5
528 .
11 0 8 ppt课∧件
15
算法:(对每一条扫描线i)
step1:把新边表NET[i]中的边结点,用插入排序法 插入活性边表AET,使之按X坐标递增顺序排序;
step2:遍历AET表,把配对交点之间的区间(左闭右开)上的各象 素(X,Y),用drawpixel(x,y,color)改写象素颜色值;
相关文档
最新文档