Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .net中多边形中的巨大数据集点(碰撞检测)_C#_.net_Dataset_Collision Detection_Polygon - Fatal编程技术网

C# .net中多边形中的巨大数据集点(碰撞检测)

C# .net中多边形中的巨大数据集点(碰撞检测),c#,.net,dataset,collision-detection,polygon,C#,.net,Dataset,Collision Detection,Polygon,我有一个非常大的多边形网格,通常是三角形,但有时是矩形。网格中的每个点都有一个值(该值与坐标无关) 现在,我在与旧网格相同的坐标空间中创建第二个网格。现在,我想使用旧网格中的值为新网格中的所有点(顶点)插值 现在,我可以在新网格中循环每个多边形,并通过2d碰撞检测来检测每个多边形中有哪些旧顶点(尽管即使这样,我也无法正常工作,因此如果有人有简单快速的2d碰撞检测代码(三角形就够了),我很乐意看到它) 不过,我要再次强调我的主要观点。为每个新多边形循环每个旧顶点似乎效率较低。有更好的方法吗?在不进

我有一个非常大的多边形网格,通常是三角形,但有时是矩形。网格中的每个点都有一个值(该值与坐标无关)

现在,我在与旧网格相同的坐标空间中创建第二个网格。现在,我想使用旧网格中的值为新网格中的所有点(顶点)插值

现在,我可以在新网格中循环每个多边形,并通过2d碰撞检测来检测每个多边形中有哪些旧顶点(尽管即使这样,我也无法正常工作,因此如果有人有简单快速的2d碰撞检测代码(三角形就够了),我很乐意看到它)


不过,我要再次强调我的主要观点。为每个新多边形循环每个旧顶点似乎效率较低。有更好的方法吗?

在不进一步了解问题的启发法的情况下,我建议的可能解决方案如下:我将确定整个场景的矩形边界,然后将该区域分割为相等的矩形分区,例如100x100。对于每个分区,您可以保留一个包含该分区中顶点的旧多边形列表(类似于“散列”旧多边形)。 然后迭代每个新多边形,确定它可能接触的分区(只需使用多边形边界矩形的顶点和其间的所有分区就可以了),并查找预构建的列表以查找对应的旧顶点,这些顶点是精确碰撞检测的候选顶点


这将减少耗时的精确碰撞检测计算,但肯定会增加内存消耗。因此,根据您的具体问题,这可能是一个很好的解决方案,也可能是不切实际的

从维基百科开始。碰撞检测用于游戏中。有剪枝算法。