1

我有一个连接线段的列表。如何获得多边形。

let lines = [
    [10, 10, 200, 10],
    [10, 10, 10, 200],
    [10, 200, 200, 10],
    [200, 10, 390, 10],
    [200, 10, 390, 200],
    [390, 10, 390, 200],
    [10, 200, 10, 390],
    [390, 200, 390, 390],
    [10, 390, 390, 390],
    [200, 10, 200, 200],
    [10, 200, 200, 200],
];

示例代码可视化:

在此处输入图像描述

// poly 1 would be something like this.
poly1 = [
    [10, 10],
    [200, 10],
    [10, 200],
];
4

1 回答 1

2

我会像这样构建解决方案:

  1. 遍历每个元素lines并将一行与另一行匹配,例如元素 1 和 2 将匹配 [10,10]
  2. 遍历从 1. 检索到的每一对线,并​​寻找lines与这对线对不匹配的起点/终点匹配的第三条线。例如,元素 1 和 2 将分别在 [200,10] 和 [10,200] 中具有不匹配的起点/终点,这将与元素 3 匹配。

Codewise 我认为最好的结构是:

  • 一个matchCoordinates(coordinateA,coordinateB)接受两个坐标对并返回布尔匹配的函数。
  • 一种matchLines(lineA,lineB)从两个元素中获取linesmatchCoordinates用于查找匹配行的函数
  • 一个findMissingLine(lineA,desiredLine)返回布尔值 if的lineA函数与desiredLinelines
于 2020-04-12T07:33:17.527 回答