根据距离

时间:2018-05-26 10:41:12

标签: geometry triangulation trilateration

我在网格上随机放置了5个{x,y}点

每个点不知道其他点的{x,y}坐标

每个点确实知道每个其他点与{x,y}位置的距离

每个点与每个其他点交换此距离信息

所以每个点都知道每个点的每个距离

使用此距离信息,每个点可以使用自身作为参考点计算(通过查找角度)每个其他点的三角形

示例,第1点可以计算以下三角形: 1-2-3, 1-2-4, 1-2-5, 1-3-4, 1-3-5, 1-4-5, 并且使用从其他点收到的距离数据,它也可以计算 2-3-4, 2-3-5, 2-4-5, 3-4-5

我想构建一个相对于单个点的每个其他点的位置的地图

我应该怎么做呢?我认为这将是某种三角测量算法,但这些主要似乎是从其他三个点计算一个点的位置,而不是基于距离信息发现其他点{x,y}坐标的其他方向

我已经尝试为每3个三角形点绘制两个可能的三角形,然后在固定的已知点上旋转它们以尝试对齐它们,但我认为这条路径最终会出现太多可能性和错误

最终,我希望每一点都以相对于自身的每个其他点的{x,y}坐标结束

1 个答案:

答案 0 :(得分:0)

你知道从一个点到另一个点的距离dij。因此,点2位于中心点1的圆周并且半径= d12。点3位于中心点1的圆周上,R = d13,它也位于中心点2的另一个圆周上,R = d23。

看到这张图片:

enter image description here

为简单起见,我在X轴上设置了第2点。

如您所见,第3点位于以P1和P2为中心的两个cicrcumferences的交点。还有第二个交叉点P3a。让我们选择一个向上并继续的那个。

对于P4,我们可以使用三个圆周,以P1,P2和P3为中心。我们再次得到两个解决方案

其余的点可以完成相同的过程。对于Pn,您有n-1个圆周。 我相信你能找到圆圈交点的数学。

必须注意一些评论:
1)如果您首先按距离P1对点进行排序,则构造会更简单。
2)并非所有距离都能产生解决方案。例如,增加d13 P3的两个圆周之间没有交集。或者增加d14,现在三个圆周不会在两个预期点44a中相交。
3)通过考虑交叉口的平均值和每个解决方案与该平均值的距离,可以使这一事实过度工作。您可以在这些距离中设置容差,并判断平均值是否为解决方案,或者某些dij是否错误。由于可能有两种解决方案,因此必须考虑两种平均值。
4)在我绘制的情况下,两个可能的三角剖分是对称的,在X轴上。

通过绕P1旋转获得真正的解决方案。要计算旋转角度,您需要另一个点的{x,y}坐标。