从点间距重建3d点

时间:2013-01-25 10:14:02

标签: computational-geometry graph-algorithm

我有一套例如8点。我知道每个点之间的所有距离。是否有算法重建这些点的三维坐标。

3 个答案:

答案 0 :(得分:5)

您尝试做的事情称为Trilateration。在你继续之前做一些研究可能是明智的,因为要做到正确是很棘手的。但是,我将从以下内容开始。

只要您拥有实际的3D距离,以下内容就可以正常工作。如果你不这样做,可能会出现问题。

  1. 取点p1,并将其指定为原点,(0,0,0)。
  2. 取另一个点,p2,并将其放置在(距离(p1,p2),0,0)
  3. 取另一个点p3,并根据它与p1和p2的距离将其放在(x,y,0)平面上。
  4. 取另一个点,p4,并根据它与p1,p2,p3的距离放置在3D空间中。
  5. 重复步骤4直到没有任何一点。
  6. 前3个步骤足以定位和固定坐标。

    解决步骤3和4可以通过利用平面三角形来完成,平面三角形由于点的居中方式而容易形成。

答案 1 :(得分:2)

假设点位于一般位置。没有3个点位于同一条线上,并且没有4个点位于同一平面上。这不是一个限制,只是为了使算法更简单而不检查特殊情况。

四个球体(在一般位置)的交叉点(如果存在)是单个点。可以看出,由于两个球体的交点是圆形,三个球体的交点是2个点,如果第四个球体的中心不在具有其他3个球体中心的平面上,则该球体只能通过其中一个交点

因此,如果距离有效,则可以通过增量添加点来创建形状。

前4个点的位置定义方向。例如。第一个点设置在原点,第二个点设置在+ X上,给定距离到第一个,第三个点设置在XY平面中,+ Y方向设置在圆形交叉点上,第四个点设置在+ Z方向上,在3个球体的交叉点上。

附加点可以通过4个球体的交点定位,前4个点的中心和距离给出的半径。

答案 2 :(得分:0)

另一种可能性是指标Multidimensionale Skalierung