我有一個應用程序,通過細分二十面體來創建近似球體。笛卡爾頂點座標轉換爲球面座標,以便所有頂點坐落在單位球體的表面上。細分的二十面體 - 如何找到任意點的最近頂點
接下來我需要做的是找到球體表面上任意點的最近頂點。我想出了兩個簡單的算法...
蠻力搜索 - 將成爲少數頂點的確定,但會過度更精細的細分。
排序/索引搜索 - 通過方位角和傾角將頂點排序爲某種順序的形式,然後創建一個粗略索引以通過限制其範圍來加速窮舉搜索。
我想知道是否有更微妙的,並希望更高性能的算法,我可以使用,而不是上述兩個之一。
更新1:我剛剛回憶說,對於應用程序的另一部分,頂點存儲有關其鄰居的信息。我的新算法是
- 選擇一個任意的起始頂點。查找哪些鄰居距離要定位的點較小。使用這個鄰居作爲新的起始頂點。重複,直到沒有任何頂點的鄰居有一個較小的距離點。這個頂點離這個點最近。
找到一個好的起始頂點的方法不太困難:在球體上覆蓋一個100x100x100網格,併爲每個網格單元預先計算距離單元中心最近的頂點。現在,給定一個任意點,查找該點所在的單元格,並使用預先計算的最近頂點作爲起點。 – 2012-09-04 21:59:53