根据距离从三角形点构建地理地图

Build a geographical map from triangle points based on distance

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

你知道一点到另一点的距离,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} 坐标。