从多个2D点构造线并测量线之间的距离

时间:2019-01-08 15:34:29

标签: algorithm line distance measure measurement

在2D平面上给出了多个点。它们代表了一个具有一些可能变化的大体矩形形式的窗框。不能保证每侧的点形成一条完美的线。窗口的每一侧都应该测量。

附在窗户上的旋转电子设备可测量所有方向上的距离,从而提供360度测量。通过使用旋转角度和距离,可以在2D坐标系上绘制一组点。到目前为止一切顺利。

Points in a 2D plane


现在来了更困难的部分。测量的窗框可能会有一些变化。将这些点转换为直线,并测量每条线的长度。

我认为需要执行以下步骤:

  1. 将不同点分组为直线。这意味着近似于形成它的点之间的每条线。
  2. 绘制这些线,摆脱用于构造线的单独点。
  3. 找到每两条线相交的点。
  4. 测量这些点之间的距离。但是,并非所有点之间的所有距离都很有趣。例如,一帧中的对角线是不相关的。

任何可以解决问题的涉及几何的Java库都是可以接受的。我将使用Kotlin / Java编写解决方案,但是欢迎使用任何其他语言或伪代码的算法见解,代码示例和思想。

先谢谢您!


新图片 enter image description here

1 个答案:

答案 0 :(得分:1)

我将分两个阶段解决此问题:

  • 数据清理:将每个点的位置(X,Y)舍入到N的最接近倍数(变化N表示不同的精度)
  • 应用gift-wrapping algorithm(也称为Jarvis March)
  • 现在,您仅具有那些不是共线的点,它们之间的线以及需要遍历它们以形成周边的顺序。
  • 依次迭代点,获取点Px和P(x + 1),并计算它们之间的距离。