OpenGL-学习之路-不规则区域的填充算法

本文介绍了两种不规则区域填充算法:简单递归的边界填充算法和扫描线种子填充算法。通过详细步骤和实现代码展示了算法的工作原理,并对编程实践中的注意事项进行了反思,强调了程序简洁性和易读性的重要性。
摘要由CSDN通过智能技术生成

一. 简单递归的不规则区域填充算法——边界填充算法(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);
    }
}

二. 扫描线种子填充算法


基本实现过程如下:

步骤1:初始化一个空的栈,存放种子点。

步骤2:将种子点入栈(首次执行步骤2传入图形内部首个种子点)。判断栈是否为空:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值