二维图形生成原理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y 12 11 10 9 8 7 6 5 4 3 2 1 p1
p0 p2 p4
p6
p3 p5 1 2 3 4 5 6 7 8 9 10 11 12
x
(a)
多边形P0P1P2P3P4P5P6P0
表;
(5)AET表不为空则转(3),否则结束。
(2)从y=ymin到y=ymax,每次用一条扫描线进行填充。
(3)对一条扫描线填充的过程可分为四个步骤:
a.求交
b.排序
y 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 x
c.交点配对
d.区间填色
扫描线算法
存在问题 *:当扫描线与多边形顶点相交时,交点 的取舍问题。
y 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 x
具体实现方式:
图5-24 与多边形顶点相交的交点的处理
检查共享顶点的两条边的另外两个端点的 y值, 按这两个 y 值中大于交点 y 值的个数是几来决 定交点数取0,1,2。
扫描线算法
0
p6
p3 p5 1 2 3 4 5 6 7 8 9 10 11 12
x
1 2 3 4 5 6 7 8 9 10 11 12
3
p3p2 6 -1/3
(a)
p3p 4 多边形P 0P1P2P3P4P5P6P0 3 5 3/4 8
p5p4 5 -1/2
8
p5p6 9 1/2
x|ymin 1 7 p2p1 12 2/5 12 -1 p0p1 桶
ymax 1/k next
7
9 p0p6
5
(c)
边表
算法步骤:
(1)初始化:构造边表,AET表置空;
(2)将第一个不空的ET表中的边与AET表合 并; (3) 由 AET表中取出交点对进行填充。填充 之后删除y=ymax的边; (4)yi+1=yi+1,根据xi+1=xi+1/k计算并修改AET 表,同时合并 ET 表中 y=yi+1 桶中的边, 按次序插入到 AET 表中,形成新的 AET
改进的有效(活性)边表算法-数据结构
有效边( Active Edge ):指与当前 扫描线相交的多边形的边,也称 为活性边。 有 效 边 表 ( Active Edge Table,
y 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 x
AET ):把有效边按与扫描线交
按扫描顺序,计算每 条扫描线与多边形的 相交区间,再用要求 的颜色显示这些区间
的像素,即完成填充
工作。
区间的端点可以通过
计算扫描线与多边形 边界线的交点获得。
图5-23 x-扫描线算法填充多边形 *算法的核心:须按 x递增顺序 排列交点的x坐标序列
扫描线算法-算法步骤:
(1)确定多边形所占有的最大扫描线数:得到多边形顶 点的最小和最大y值(ymin和ymax)。
图形生成原理 Principles of Picture Generation
多边形的类形
( 1 )凸多边形---指任意两顶点间的连线均在多边形内 ( 2 )凹多边形---指任意两顶点间的连线有不在多边形 内的部分 ( 3 )含内环的多边形---多边形内再套有多边形,多边
形内的多边形也叫内环,内环之间不能相交。
x|ymin ymax 1/k NEXT
y 12 11 10 9 8 7 6 5 4 3 2 1 p1
交点x(即较低端点的x值),1/k,
p0 p2 p4
p6
(4)同一桶中若干条边按X|ymin由小到
大排序,若 X|ymin 相等,则按照 1/k由小到大排序。
p3 p5 1 2 3 4 5 6 7 8 9 10 11 12
有效边求交
• 利用多边形边的连贯性 *,
如图:若y=yi,x=xi,则当
12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 x
图5-23 x-扫描线算法填充多边形 xi+1 ,y i+1
y=yi+1=yi+1,xi+1=xi+1/k
1 xi,yi 1/k
1
1 1 0 2 2
图5-25 与扫描线相交的多边形顶点的交点数
1 0 2
解决顶点交点计为1时的情形*:
扫描线y+1 扫描线y 扫描线y-1
(a)原图
(b)缩短ymax的边
(c)缩短ymin的边
图5-28 将多边形的某些边缩短以分离那些应 计为1个交点的顶点
改进的有效(活性)边表算法
y
改进:
• 处理一条扫描线时,仅对
y 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 x
图5-24 与多边形顶点相交的交点的处理
扫描线算法
解决:ห้องสมุดไป่ตู้
当扫描线与多边形的顶点相交时, • 若共享顶点的两条边分别落在扫描线 的两边,交点只算一个; • 若共享顶点的两条边在扫描线的同一 边,这时交点作为零个或两个。
点x坐标递增的顺序存放在一个链 表中,此链表称为有效边表。 有效边表的每个结点: x ymax 1/k next
图5-23
x-扫描线算法填充多边形
边所在的最大扫描线值
改进的有效(活性)边表算法-数据结构
边表*(Edge Table)
边表的构造:
(1)首先构造一个纵向链表,链表的长度为多边形所占有
的最大扫描线数,链表的每个结点,称为一个桶,则
计算机中多边形的表示方法
顶点表示: 用多边形的顶点序列来表示多边形 点阵表示: 用位于多边形内的象素的集合来表示多边形
多边形的扫描转换
把多边形从顶点表示转换到点阵表示。
多边形的扫描转换方法
• • • • 扫描线算法; 边缘填充法; 栅栏填充法; 边界标志法。
基本思想
扫描转换-扫描线算法
y 12 11 10 9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 11 12 x
对应多边形覆盖每一条扫描线。 (2) 将每条边的信息链入与该边最小 y 坐标( ymin )相对 应的桶处。也就是说,若某边的较低端点为 ymin ,则 该边就放在相应的扫描线桶中。
改进的有效(活性)边表算法-数据结构
(3)每条边的数据形成一个结点,内
容包括:该扫描线与该边的初始 以及该边的最大y值ymax。
x
(a)
多边形P0P1P2P3P4P5P6P0
解决顶点交点计为1时的情形*:
扫描线y+1 扫描线y 扫描线y-1
(a)原图
(b)缩短ymax的边
(c)缩短ymin的边
图5-28 将多边形的某些边缩短以分离那些应 计为1个交点的顶点
y 12 11 10 9 8 7 6 5 4 3 2 1 p1
p0 p2 p4
相关文档
最新文档