计算节点的可能坐标

本文关键字:坐标 节点 计算 | 更新日期: 2023-09-27 18:27:22

这可能是一个奇怪的应用程序。问题的简要描述是"如何根据相对位置(距离)获得节点的绝对协调?"

我们有许多节点(每个节点都有一个唯一的ID)和一个列表,该列表指定其相邻节点和到每个节点的距离作为输入。

所需的输出将是在2D曲面上布置这些节点的一种可能方式。

生成的算法将用于C#。。。因此,外部的.net库可能也会有所帮助。

如果你能给我一个这样做的方法,那将是一个很大的帮助。提前谢谢。

计算节点的可能坐标

开始时必须至少有三个已知点的坐标。

方法一。如果已知点是相邻的,这个过程很简单——你循环所有的点,寻找这样的点,它们的列表中有三个已知点。使用其中两个来计算两个可能的位置,然后使用第三个来选择右侧或左侧变体。重复循环,直到循环过程中没有新点为止。

这个简单的算法收敛性很差——误差不断累积,远点可能有不好的坐标。但当你有坐标整数时,你可以在每次计数后修复坐标,并使其良好

方式二。如果已知点彼此不相邻,则过程更加复杂。

  • 比方说,你已经开始了已知的点A,B,C
  • 取A和它的一些相邻点D。把它放在离A正确距离的某个地方
  • 找到A和D附近的某个点E。从两个可能的位置中选择任意一个
  • 从A、D、E开始,用I的方式
  • 当你从远处到达第二个已知起点时,让它是B,当然,它会在一个糟糕的地方。把你建立的所有网都绕着A转,这样B就会得到正确的坐标。继续循环
  • 当你到达最后一个已知起点C时,它将被设置为正确或不正确。如果没有,镜像整个网络相对AB轴-C将被正确设置。(如果没有,则表示数据不正确)。继续我循环的方式直到结束

如果你对所有要点都有很长的清单,这两种方法都有效。如果点只给定了很少的距离,那么任务就会变得非常复杂。