问题描述:
在多边形区域内部填充某元素。
基础算法
种子算法,即从内部某一点开始填充,再递归填充周围的点(上下左右——四连通)。直到遇到边界。
算法伪代码
void tianchong(int x,int y,int color){
if point(x,y) out of the Boundary
then return
else{
point(x,y).setcolor(color);
tianchong(x,y+1,color);
tianchong(x,y-1,color);
tianchong(x-1,y,color);
tianchong(x+1,y,color);
}
}
算法性能分析
在实际应用中,出现了递归调用栈溢出的情况,先在这里留坑,下次再补上具体的数据吧。
算法改进
基础算法在实际应用中,除了上面所说的当填充面积过大时,出现栈溢出的错误外,还会出现重复填充,很大程度上影响效率。一种改进思路就是,建立一个存放每条连续扫描线的最右端点的堆栈。在这篇论文中有具体的伪代码实现扫描线种子填充算法的改进。
小结
这个算法算是递归思想的一种应用,其性能自然也是和递归密切相关。分析这一块还没细想。留坑待填。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。