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