从点间距离重构3D点

4

我有一组包含8个点的数据。我知道每两个点之间的距离。请问是否存在一种算法可以重建这些点的三维坐标?


问题在于距离只包含相对位置的信息。你可能可以从这些信息中制作一个三维形状,但是它的方向和位置(在三维空间中)无法从距离中确定。不确定这是否足够满足您的需求。 - Nuclearman
是的,我知道。我的目标是获得一个三维形状。有什么算法吗? - Mario
3个回答

5
你所尝试的是三边定位。在继续之前最好先做些研究,因为它很难正确地完成。不过我会从以下开始。
只要你有实际的三维距离,以下步骤应该能够奏效。如果没有,可能会出现问题。
1. 取一个点p1,并将其指定为原点(0,0,0)。 2. 取另一个点p2,并将其放置在(distance(p1,p2),0,0)处。 3. 取另一个点p3,并根据其与p1和p2的距离,在(x,y,0)平面上放置它。 4. 取另一个点p4,并根据其与p1、p2、p3的距离,在三维空间中放置它。 5. 重复第4步,直到没有剩余点。
前三个步骤足以确定坐标系。
通过利用由点的中心轻松形成的平面三角形来解决第3和第4步。

谢谢,三边定位是我正在寻找的关键词! - Mario
1
谢谢,很好的关键词要记住。 - Ante
确实,Ante,我基本上知道如何做,但这个术语对我来说也是新的,在研究三角测量时发现了它。它可以在给定角度的情况下计算距离。基本上需要完成的就是相反的过程。 - Nuclearman

2
假设这些点处于一般位置,即没有3个点在同一条直线上,也没有4个点在同一个平面上。这并不是限制条件,只是为了使算法更简单,不需要检查特殊情况。
如果四个球体(处于一般位置)相交,则相交点为单个点。这可以通过看到两个球的交点是一个圆,三个球的交点是2个点,并且如果第四个球的中心不在与其他三个球的中心共面的平面上,则该球只能通过一个交点来进行传递。
因此,如果距离有效,则可以通过逐步添加点来创建形状。
前4个点的位置定义方向。例如,将第一个点设置为原点,将第二个点设置为到第一个点给定距离的+X,将第三个点设置为在XY平面中+Y方向的圆的交点上,将第四个点设置为在+Z方向的3个球的交点上。
可以通过具有以前4个点为中心并由距离给出的半径的4个球的交点来定位其他点。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接