当前位置:
文档之家› 第四章二维填充与多边形扫描转化
第四章二维填充与多边形扫描转化
着色的平面 多边形
线框多边形物体
填充多边形物体
5.1多边形的扫描转换
5.1.1概念 多边形分为凸多边形、凹多边形、含内
环的多边形。
• 多边形的表示方法 –顶点表示
–点阵表示
• 顶点表示:用多边形顶点的序列来刻划多 边形。 优点:直观、几何意义强、占内存少; 缺点:难以判断哪些像素位于多边形内部, 不能直接用于面着色。
y=yik y=yik+1
算法步骤:
(1)确定多边形所占有的最大扫描线数。即得 到多边形顶点的最小和最大y值。(Ymin和 Ymax)
(2)从y=ymin到y=ymax:每次用一条扫描线填充。 (3)填充步骤: • 求交:计算扫描线与多边形各边的交点。 • 排序:所有交点按递增的顺序排序。 • 交点配对:第一个与第二个,第三个与第四
•假定非水平边与扫描线y=e 相交,交点的横坐标为x, 规则如下
●规则1: X为小数,即交点落于扫描线上两个相邻 像素之间 (a)交点位于左边之上,向右取整 (b)交点位于右边之上,向左取整
●规则2:
边界上象素的取舍问题,避免填充扩大 化。
●解决方法:
边界象素:规定落在右上边界的象素 不予填充。
P3 P4 6 3 -2
AET指针 扫描线2
P3 P4 4 3 -2
AET指针 扫描线3
P4 P5 260
(x, ymax,Δx, next)
P3 P2 6 5 0.5 ^
P3 P2 6.5 5 0.5 ^
P3 P2 7 5 0.5 ^
活动边表的例子
AET指针 扫描线4
AET指针 扫描线5
AET指针 扫描线6
第五章 多边形的扫描转换 与区域填充
教学内容: 1、多边形扫描转换:
通过确定穿越区域的扫描线的覆 盖去件来填充。 2、区域填充:
是从给定的位置开始涂描直到指 定的边界条件为止。
• 关于光栅图形
– 本质:点阵表示 – 特点:面着色,画面明暗自然、色彩丰富 – 与线框图相比:更加生动、直观、真实感强
线框平面多 边形
二、改进的有效边表算法(Y-连贯性算法)
(1)有效边(Active Edge):与该扫描线 相关的多边形的边。
Pi+1 Pi
边的相关性: 扫描线Yi+1 若pi(xi,yi),则有 扫描线Yi pi+1(xi+1,yi+1),其中
xi+1=xi+1/k,yi+1=yi+1
两边的相关性为每条边建立一个边记录, 其结点内容为:
在ET表中:
•与X轴平行的边不计入 •顶点:如前法则相同。
(3)有效边表(活动边表):AET(Active Edge Table)
将有效边按与扫描线交点x坐标递增的顺序 存放在一个链表中,称此链表为AET。
结点内容为:
X
ymax 1/k
next
其中x为当前扫描线与边的交点
活动边表的例子
AET指针 扫描线1
P4 P5 26 0
P4 P5 260
P5 P1 274
P3 P2 7.5 5 0.5 ^
P2 P1 8 7 -1 ^
P2 P1 8 7 -1 ^
(4)算法实现步骤
这样,当建立了边的分类表ET后,扫描线算法可 按下列步骤进行: (1)取扫描线纵坐标y的初始值为ET中非空 元素的最小序号。 (2)将边的活化链表AEL设置为空。 (3)按从下到上的顺序对纵坐标值为y的扫 描线(当前扫描线)执行下列步骤,直到边的 分类表ET和边的活化链表都变成空为止。
具体实现时,只要对扫描线与多边形的 相交区间左闭右开
●规则3:
扫描线与多边形的顶点相交时,交点的取舍, 保证交点正确配对。
●解决方法:
检查两相邻边在扫描线的哪一侧。
只要检查顶点的两条边的另外两个端点的 Y值,两个Y值中大于交法 基本思想:按扫描线顺序,计算扫描线与 多边形的相交区间(像素),再用相应的 颜色(或图案)显示这些像素。
–两种方法:扫描线算法;边界标 志法。
多边形的顶 点表示
多边形的点 阵表示
5.1.2 扫描线算法
• 扫描线算法 –目标:利用相邻像素之间的连贯性, 提高算法效率 –处理对象:非自交多边形 (边与边 之间除了顶点外无其它交点)
–交点的取整规则 •要求:使生成的像素全部位于多边 形之内 –用于线画图元扫描转换的四舍五 入原则导致部分像素位于多边形 之外,从而不可用
C)将边的活化链表AEL中满足y=ymax的边删去。 D)将边的活化链表AEL剩下的每一条边的x域累
X|ymin
ymax 1/k
next
(2)边表(ET:Edge Table):是一个包含 多边形全部边记录的表。
边表
^
P5 P1
274 ^
P2 P1 8 7 -1 ^
^
P4 P5
26 0 ^
^
P3 P4
P3 P2
6 3 -2
6 5 0.5 ^
•纵向链表的构造:长度为最大扫描线数。 •将相关边(该扫描线)的记录接点链入。 •一个结点(纵向链)有多个相关边时,按x|ymin 由小到大的顺序;如果x|ymin相等,则按1/k由 小到大的顺序。
A)如边分类表ET中的第y类元素非空,则将属 于该类的所有边从ET中取出并插入边的活化 链表中,AEL中的各边按照x值(当x值相等时, 按Δx值)递增方向排序。
B)若相对于当前扫描线,边的活化链表AEL非 空,则将AEL中的边两两依次配对,即1,2边 为一对,3,4边为一对,依次类推。每一对 边与当前扫描线的交点所构成的区段位于多 边形内,依次对这些区段上的点(象素)按 多边形属性着色。
个等,每对交点代表扫描线与多边行的一个 相交区间。 • 区间填色:把这些相交区间内的像素置成不 同于背景的填充色。
存在的问题:
当扫描线与多边形顶点相交时,交点 的取舍问题.
解决的方法:
• 共享顶点的两条边分别落在扫描线 的两边,则交点只算一个.
• 共享顶点的两条边在扫描线的一侧, 则交点算0或者2个.
点阵表示:用位于多边形内的象素的集 合来刻划多边形。
缺点:失去了许多重要的几何信息;
优点:便于运用帧缓冲存储器表示图形, 易于面着色。
–多边形的扫描转换:
把多边形的顶点表示转换为点 阵表示,也就是从多边形的给定 边界出发,求出位于其内部的各 个象素,并给帧缓冲器内的各个 对应元素设置相应的灰度和颜色, 通常称这种转换为多边形的扫描 转换。