原理
循环栈内点,填充并判断点附近的六个方向是否有需填充的点,若是且点未在栈内就压入栈。循环至栈空。
FloodFill()
{
把seedPoint放入栈中;
标记seedPoint点为true;
while(栈内数量不为0)
{
从栈中提取一点p;
把p变色;
foreach(点p附近的6个点)
{
if(点p是目标点且标记为false)
{
标记点p为true;
把p推入栈中;
}
}
}
}
参数
三维数据 DataType data
种子点坐标 PointType seedPoint
填充使用的数值int fillValue
三维数据的标记图 bool(datasize) maskData
函数
FloodFill(DataType data,PointType seedPoint,int fillValue,bool(datasize) maskData)//漫水填充
GetNeighbor(PointType point)//可以是6邻域也可以是12邻域
效率
将栈改为队列会增加运算时间,200*500*500左右大小数据处理时间在0.5s。