【问题标题】:Splitting a 2D polygon using multiple straight cuts使用多个直线切割分割 2D 多边形
【发布时间】:2021-06-17 07:06:21
【问题描述】:

如何使用多条直线切割线将多边形分割成更小的多边形?想象一下用锋利的刀切纸。我正在寻找一种已知的算法来解决这个问题,或者更好的是,现有的 javascript 库。

我不认为布尔运算可以解决这个问题,但我当然可能是错的。

【问题讨论】:

  • 这太宽泛了。将其分解为几个步骤:识别交叉点、路径等。注意:要求图书馆是题外话。
  • 我如何将其分解为几个步骤: 1. 识别所有交叉点并构建图形 2. 找到 2 核(如果存在 1 度的顶点,请将其删除) 3.找到自然平面嵌入,将其存储为双连接边列表,枚举非无限面。

标签: algorithm polygon computational-geometry


【解决方案1】:

我按照 cmets 中 David Eisenstat 提供的步骤解决了这个问题并让它发挥作用。所以基本上:

1.查找所有线交点

多边形中的所有切割线和每条线都包括在内。 Bentley-Ottmann sweep line algorithm 可用于查找交点。

2。构造图

使用交叉点及其对应的线段很容易做到这一点。

3.在图中查找循环

当时的图表是decomposed into a collection of oriented cycles

【讨论】:

    【解决方案2】:

    我以 Angus Johnson 的 Clipper 库发誓:

    http://www.angusj.com/delphi/clipper/documentation/Docs/Overview/_Body.htm

    它使用 Vatti 算法,该算法涉及一些复杂的树结构来跟踪交叉点。它处理多边形孔、多个重叠多边形、将几乎平行的线与固定点合并,它的标记机制让您可以非常详细地跟踪什么与什么相交。

    【讨论】:

      猜你喜欢
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 2011-08-09
      • 2011-04-07
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多