我需要从一个由点列表表示的封闭2D多边形创建二进制位图。你能否指导我使用高效且足够简单的算法来实现,或者最好提供一些C++代码?
非常感谢!
注:我想避免向我的项目添加依赖项。但是,如果您建议一个开源库,我可以查看代码,因此也可能很有用。
非常感谢!
注:我想避免向我的项目添加依赖项。但是,如果您建议一个开源库,我可以查看代码,因此也可能很有用。
draw_fillpoly
函数。为了实现"奇偶规则"的强大应用
请参考Darel Rex Finley's Efficient Polygon Fill或者Blender的版本。
这是一种支持自相交线段的奇偶填充方法,无需复杂的代码来检测这种情况,并且不依赖于绕组(多边形可以反转并产生相同的结果)。
更新,我优化了Darel Rex方法的版本,避免了每个y像素循环遍历所有坐标。
独立实现:
虽然加速可能是指数级的,但从快速测试中可以看出,在2540x1600区域内手绘涂鸦时,速度提高了约7.5倍(去除round
调用后为11倍),具体情况因人而异。
复杂度为O(像素面积)