我有一个很大的网格与多边形,通常是三角形,但有时是矩形。我的网格中的每个点都有一个值(值与坐标无关)。
现在我在与旧网格相同的坐标空间中创建第二个网格。我现在想要使用旧网格中的值插入新网格中所有点(顶点)的值。
现在我可以循环新网格中的每个多边形,并通过进行2d碰撞检测来检测每个多边形中的哪些旧顶点(即使这样我也无法正常运行,所以如果有人有简单快速的代码进行二维碰撞检测(三角形就足够了)我很乐意看到它。)
然而再次向我提出要点。为每个新多边形循环每个旧顶点似乎效率低下。有更好的方法吗?
答案 0 :(得分:1)
我建议作为一个可能的解决方案,如果没有进一步了解你的问题的启发式方法如下:我将确定整个场景的矩形边界,然后将该区域分成相等的矩形分区,例如100×100。对于每个分区,您可以在此分区中保留带有顶点的旧多边形列表(对旧多边形进行“散列”)。 然后迭代每个新的多边形,确定它可能触摸哪些分区(你可以使用多边形的边界矩形的顶点和中间的所有分区)并查找预先建立的列表以找到相应的旧顶点。准确的碰撞检测。
这将减少耗时的精确碰撞检测计算次数,但肯定会增加内存消耗。因此,根据您的确切问题,这可能是一个很好的解决方案,或者它可能是不切实际的。