我在球体表面上有很多要点。
如何计算具有最大点密度的球体的面积/点?
我需要非常快地完成此操作。例如,如果这是一个正方形,我想我可以创建一个网格,然后让点投票确定网格的哪个部分是最好的。
我尝试将这些点转换为球面坐标,然后进行网格处理,但这两种方法都无法正常工作,因为北极附近的点在球体上很近,但在转换后却很远。
谢谢
最佳答案
在混合中添加其他替代方案:可以通过精制内接多面体在球形几何体上定义许多(几乎)规则网格。
第一种选择称为二十面体网格,它是球面的三角剖分。通过连接围绕每个顶点的三角形的中心,您还可以基于基础三角剖分创建双六边形网格:
如果不喜欢三角形(和/或六边形),则另一个选择是立方体球体网格,它是通过分割内切立方体的面并将结果投影到球体表面上而形成的:
无论哪种情况,重要的一点是生成的网格几乎是规则的-因此,要评估球体上最高密度的区域,您可以简单地执行直方图样式分析,计算每个网格单元的样本数量。
正如许多评论者所指出的那样,要解决网格中的轻微不规则性,可以通过除以每个网格单元的面积来归一化直方图计数。然后将所得的密度作为“每单位面积”度量给出。要计算每个网格单元的面积,有两种选择:(i)您可以通过假设边缘为直线来计算每个单元的“平坦”面积-当网格足够时,这样的近似值可能会很好或(ii)您可以通过评估必要的表面积分来计算“真实”表面积。
如果您有兴趣高效地执行必要的“单元中点”查询,则一种方法是将网格构造为quadtree -从粗糙的内接多面体开始,并将其面精炼为子面树。要找到封闭的单元格,您可以简单地从根开始遍历树,这通常是O(log(n))
操作。
您可以获取有关这些网格类型here的其他信息。
关于algorithm - 球面上最高密度的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24658889/