图形学篇:多边形有效边表填充算法

什么是多边形?

  • 多边形是由折线段组成的封闭图形

多边形的表示方法有哪些?

  • 顶点表示法:使用顶点进行描述,但此时多边形仅仅是一些封闭线段,内部是空的,且不能直接进行填充上色
  • 点阵表示法:使用大量的点进行描述,描述完成之后,得到的就是完整形态的多边形,内部已被填充,可直接针对点来进行上色

多边形的扫描转换就是从顶点表示法转换到点阵表示法的过程。

基础的填充多边形方式:

  • 检查光栅上的每一个像素是否位于多边形内

光栅究竟是什么?

  • 由大量等宽等间距的平行狭缝构成的光学器件称为光栅,这是专业且准确的方法,然而明显不是给人看的(观众:???)
  • 光栅是连接帧缓冲和具体的电脑屏幕的桥梁(这是很老的大头显示器上的,现在的液晶显示器不存在光栅,它的成像依靠的是电场,液晶,滤光膜等,所以我们暂且把这里说的的光栅理解为像素

光栅化究竟是什么?

有效边表填充算法:

  • 基本原理:按照扫描线从小到大的移动顺序,计算当前扫描线与有效边的交点,然后把这些交点按x的值递增顺序进行排序,配对,以确定填充去间,最后用指定颜色填充区间内的所有像素,即完成填充工作
  • 优势:通过维护边表和有效边表,避开了扫描线与多边形所有边求交的复杂运算,性能提升巨大
  • 边界像素处理原则:对于边界像素,采用“左闭右开”和“下闭上开”的原则
  • 有效边:多边形与当前扫描线相交的边
  • 有效边表:把有效边按照与扫描线交点x坐标递增的顺序存放在一个链表中,称为有效边表
  • 桶表:按照扫描线顺序管理边的数据结构

算法实现:

将VC 6.0 调整到ClassView视图

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值