0

我有 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} 坐标结束

4

1 回答 1

0

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

看这张图片:

在此处输入图像描述

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

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

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

其余点也可以完成相同的过程。因为Pn你有n-1周长。
我相信您可以找到圆-圆相交的数学运算。

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

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

于 2018-05-26T18:07:09.363 回答