我在屏幕上使用 OpenGL ES 渲染了许多 2D(可能相交)多边形。所有的多边形都完全包含在屏幕中。找到这些多边形的并集面积占屏幕总面积百分比的最及时方法是什么?需要及时性,因为我需要在多边形移动时立即更新覆盖区域。
目前,我将每个多边形表示为一个二维布尔数组。使用多边形中的点函数(来自几何包),我对屏幕上的每个点(x,y)进行采样以检查它是否属于多边形,如果是,则设置多边形[x][y] = true,否则为假。
在对屏幕中的所有多边形执行此操作后,我再次遍历所有屏幕像素,并检查每个多边形数组,如果任何多边形的多边形 [x] [y] 值设置为 true,则将该像素计数为“已覆盖” .
这可行,但随着多边形数量的增加,性能并不理想。有没有更好的方法来做到这一点,如果可能的话,使用开源库?我想到了:
(1) 合并多边形以获得一个或多个不重叠的多边形。然后使用标准的多边形面积公式计算每个多边形的面积。然后总结它们。不知道如何让它工作?
(2) 以某种方式使用 OpenGL。想象一下,我正在用一种颜色渲染所有这些多边形。是否可以用某种颜色计算屏幕缓冲区上的像素数?这听起来确实是一个不错的解决方案。
有什么有效的方法来做到这一点?