扫描线多边形填充算法及其OpenGL实现

算法概述

Scan-line Polygon FillAlgorithm(扫描线多边形填充算法),是一种利用Vertex位置、Y-bucket sort(Y桶排序)和Activated Edge List(活化边表)的多边形填充算法。它透过活化边表对定点的描述,很好的解决了奇异点的问题;同时减少了数据存储量,使得点间的连线得以使用计算的方法得到。

算法过程

1.                 使用鼠标逐个输入多边形的定点,并且使用数组vertexes记录点的位置;

2.                 构建边表:

•             初始化边表数组的长度为绘图区域的高度;

•             由始至终遍历数组,分别将获取的顶点写入相应的边表位置:

◦            若该点的相邻点在该点上方,则淘汰;

◦            若该点的相邻点在该点的下方,则左下方点的边表元素应在右下方点所对应边表元素的右侧;

•             遍历完成,边表创建完成。

3.                 逐行构建活化边表并填充:

•             创建活化边表,初始化为空,仅包含首指针元素;

•             逐行遍历边表,并将全部得到的顶点写入活化边表;

•             活化边表中的数据项应随着扫描线的下移,在本层所有操作开始之前将dY递减、将x值逐层加上dX,并删除dY为0的节点;

•             当活化边表被清空时,遍历结束。

算法实现流程




算法实现代码

http://download.csdn.net/detail/yqz411/3928118

你可能感兴趣的:(图形图像/多媒体相关)