一. 简单递归的不规则区域填充算法——边界填充算法(4联通)
方法十分简洁直观,从内部初始点逐个像素地向外处理,直至遇到边界颜色。
实现代码:
//边界填充算法(4联通)[递归]
void boundaryFill4(GLint x_Index, GLint y_Index)
{
//范围超过窗口边界
if (x_Index<0 || y_Index<0 || x_Index>NUM_HORIZ_ELEMENT || y_Index>NUM_VERTICLE_ELEMENT)
{
return;
}
if (data[x_Index][y_Index] == 0)
{
//修改数据
data[x_Index][y_Index] = 2;
//向右填充递归
boundaryFill4(x_Index + 1, y_Index);
//向左填充递归
boundaryFill4(x_Index - 1, y_Index);
//向上填充递归
boundaryFill4(x_Index, y_Index+1);
//向下填充递归
boundaryFill4(x_Index, y_Index-1);
}
}
二. 扫描线种子填充算法