2013-01-25 41 views
4

我有一組例如8分。我知道每個點之間的所有距離。有沒有一種算法來重建這些點的三維座標。從點間距重建3d點

+0

Sorta,問題是距離只包含相對位置的信息。您可以根據該信息製作3D形狀,但是它的方向和位置(在3D空間中)無法根據距離確定。不知道這是否足夠滿足你的需求。 – Nuclearman

+0

是的,我知道。我的目標是獲得3D形狀。任何算法? – Mario

回答

2

讓我們假設點位於一般位置。沒有3點在同一條線上,並且4點不在同一平面上。這不是一個限制,只是爲了簡化算法而不檢查特殊情況。

交叉口,如果存在,四個球(在一般的位置)是一個單一的點。可以看出,因爲兩個球的交點是一個圓,三個球的交點是2個點,並且如果第四個球的中心不在其他三個球的中心的平面上,那麼該球只能通過其中一個交點。

所以,如果距離是有效的,比形狀可以通過增量加分它創建。

前4個點的位置定義方向。例如。第一點設置在原點上,第二點設置在+ X上,第一點,第三點設置在XY平面上的+ Y方向上的交點上,第三點設置在+ Z方向上的三點交點上。

附加點可以通過用距離他們在給定的第一4個點和半徑中心的4個球體交點來定位。

4

你所試圖做的是叫做Trilateration。在你繼續之前進行一些研究可能是明智的,因爲要正確對待它很困難。不過,我會從以下幾點開始。

只要您具有實際的3D距離,以下內容應該可以工作。如果你不這樣做,問題可能會出現。

  1. 取一個點p1,並將它賦值爲原點(0,0,0)。
  2. 取另一個點p2,並將它放在(distance(p1,p2),0,0)
  3. 取另一個點p3,並根據它的位置(x,y,0)與p1和p2的距離。
  4. 根據距離p1,p2,p3的距離取另一個點p4,並放置在三維空間中。
  5. 重複步驟4直到沒有剩餘點。

前3個步驟是足夠定向和固定的座標。

求解步驟3和4可通過使用平面三角形的容易由於點是如何中心來完成,即形式。

+0

謝謝,Trilateration是我一直在尋找的關鍵詞! – Mario

+1

謝謝,好記的關鍵字。 – Ante

+0

事實上,Ante,我知道它基本上可以如何完成,但這個術語對我來說也是新的,在查看Triangulation時發現它。給出角度,計算距離。基本上需要做什麼,但相反。 – Nuclearman