X-扫描线算法

多边形的扫描转换

多边形有两种重要的表示方法:顶点表示和点阵表示

 

顶点表示是用多边形的顶点序列来表示多边形。这种表示直观、几何意义强、占内存少,易于进行几何变换。

但由于它没有明确指出哪些象素在多边形内,故不能直接用于面着色

点阵表示是用位于多边形内的象素集合来刻画多边形。这种表示丢失了许多几何信息(如边界、顶点等),但它却是光栅显示系统显示时所需的表示形式。

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

 

X-扫描线算法

X-扫描线算法填充多边形的基本思想是按扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的像素,即完成填充工作

 

算法的核心是按X递增顺序排列交点的X坐标序列。由此,可得到X-扫描线算法步骤如下:

(1)确定多边形所占有的最大扫描线数,得到多边形顶点的最小和最大y值(ymin和ymax)

 

(2)从y = ymin到y = ymax,每次用一条扫描线进行填充

 

(3) 对一条扫描线填充的过 程可分为四个步骤:

a、求交:计算扫描线与多边形各边的交点

b、排序:把所有交点按递增顺序进行排序

c、交点配对:第一个与第二个,第三个与第四个

d、区间填色:把这些相交区间内的像素置成不同于背景色的填充色

当扫描线与多边形顶点相交时,交点的取舍问题(交点的个数应保证为偶数个)

 

(1)若共享顶点的两条边分别落在扫描线的两边,交点只算一个

(2)若共享顶点的两条边在扫描线的同一边,这时交点作为零个或两个

检查共享顶点的两条边的另外两个端点的y值,按这两 个y值中大于交点y值的个数来决定交点数

存在的问题

为了计算每条扫描线与多边形各边的交点,最简单的方法是把多边形的所有边放在一个表中。在处理每条扫描线时,按顺序从表中取出所有的边,分别与扫描线求交

这个算法效率低,为什么?
关键问题是求交!
而求交是很可怕的,求交的计算量是非常大的

转载于:https://www.cnblogs.com/cnblog-wuran/p/9700334.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值