在多边形区域内部填充某元素。算法
种子算法,即从内部某一点开始填充,再递归填充周围的点(上下左右——四连通)。直到遇到边界。性能
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); } }
在实际应用中,出现了递归调用栈溢出的状况,先在这里留坑,下次再补上具体的数据吧。ui
基础算法在实际应用中,除了上面所说的当填充面积过大时,出现栈溢出的错误外,还会出现重复填充,很大程度上影响效率。一种改进思路就是,创建一个存放每条连续扫描线的最右端点的堆栈。在这篇论文中有具体的伪代码实现扫描线种子填充算法的改进。url
这个算法算是递归思想的一种应用,其性能天然也是和递归密切相关。分析这一块还没细想。留坑待填。.net