2013-01-25 39 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