绘制填入区域 之 ALTERNATE 与 WINDING

本文详细解析了在计算机图形学中Alternate填充规则的工作原理,对比Winding规则,阐述了在不同顶点连接顺序下多边形填充的区别,特别强调了交叉边情况下Alternate规则的处理方式。

关于WINDING应该没什么的,主要问题集中在ALTERNATE。

polygon_shape

 

ALTERNATE需要进行两个步骤的分析首先画出的多边形,按照定点的先后次序,会产生组成多边形的各条边交叉和不交叉两种情况,在图中,“points1 polygon shape”的图形是由顶点交叉形成的,“points2 polygon shape”的图形是由顶点未交叉形成的。

在未交叉的情形下,ALTERNATE与WINDING绘制出的效果是一样的。


接下去分析,在顶点组成的边交叉情况下绘制出的图形会存在有些区域被黄颜色填充,有些没有填充。
在填充多边形的时候,显示器是逐行扫描将多边形填满的。就是说如果是个矩形,显示器就是从左到右画最上面一行的一根黄线,然后依次画第二行,第三行,直到最下面一行被黄颜色填满。

画多边形的行为和画矩形是一样的,就是每一行画的线段有长有短而已。这个行为就是逐行扫描,而每一行被称为“扫描行”。
当有左边顶点(10,190)画到右边顶点(170,190)时,这根水平线(扫描行)不一定是连续画的,中间可能会断掉。

譬如,当中间会经过其他的边形成一个交叉点时,这跟水平线需要作出判断,从(10,190)开始遇到的第一个交叉点需要进行编号,(10,190)这个点为1号,第一个交叉点为2号,在1号和2号顶点之间的水平线,显示器是画出来的,根据MSDN的说明:
fills area between odd-numbered and even-numbered polygon sides on each scan line
中文意思:在每一条扫描行上填充奇数边和偶数边之间的区域。


说实话,MSDN的解释十分晦涩,我甚至觉得它的解释不精确,如何解释(10,190)这个点?可以硬套它的解释,不过不懂的人根本无法理解(10,190)这个点究竟算奇数边还是偶数边?
因此更容易理解,还是将MSDN上的边理解为点-- 在每一条扫描行上填充奇数点和偶数点之间的线段。


因此,(10,190)这个点编号为1(再次声明下),遇到的第一条交叉边形成的交叉点为2号点,1和2之间的水平线段进行黄色填充,接下去从2号点开始往右扫描,扫描到又一个交叉点,编号为3号,2号和3号之间不填充黄色,也就是MSDN上说的,在奇数边和偶数边之间进行填充,但在偶数边和奇数边之间不填充。

这里再次更正MSDN的说法,应该是从奇数点到偶数点之间进行填充,从偶数点到奇数点之间不填充

 -- fill line segment from odd-numbered point to even-numbered point and not fill line segment from even-numbered point to odd-numbered point on each scan line.

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索局部开发之间实现平衡。文章详细解析了算法的初始化、勘探开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOAMOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值