我有一个应用程序,它通过细分二十面体来创建球体的近似值。笛卡尔顶点坐标转换为球坐标,因此所有顶点都位于单位球体的表面上。
接下来我需要做的是找到离球体表面任意点最近的顶点。我想出了两个简单的算法......
蛮力搜索 - 对于少数顶点来说可以,但对于更精细的细分来说会过度。
排序/索引搜索 - 通过方位角和倾角将顶点排序为某种形式的顺序,然后创建一个粗略的索引以通过限制其范围来加速蛮力搜索。
我想知道是否有一种更微妙、希望性能更高的算法可以用来代替上述两种算法中的一种。
更新 1:我刚刚回忆起,对于应用程序的另一部分,顶点存储有关其邻居的信息。我的新算法是
- 选择一个任意的起始顶点。找出它的哪个邻居与要定位的点的距离更小。使用这个邻居作为新的开始顶点。重复直到没有一个顶点的邻居与该点的距离更小。这个顶点离该点最近。