algorithm - 特殊方向的多边形分解

标签 algorithm computational-geometry polygons decomposition

我正在寻找一个可以分解多边形的库。我想定义多边形应该被分割的方向或线,如下所示:

an irregular polygon with internal subdivision lines, some vertical some not

这样我就得到了小多边形。有人知道支持这个的图书馆吗?

或者有什么想法?

最佳答案

我不确定您使用的是哪种语言。我有一个为我的目的而编写的库,它可以通过给定的线集获得完整的分区并返回多边形作为结果。它是用 PHP 编写的,名为 dimension并且,使用它,您可以像这样解决您的问题:

  1. 通过一组线 LineSet_2D 或 Polygon_2D 定义多边形
  2. 也通过 Line_2D 定义分割线
  3. 使用 LineSet_2D 方法 getPolygons 查找所有多边形

我写了一个例子:

//define or polygon. Note that Polygon_2D can also be used
$rPolygon = new LineSet_2D(
    new Line_2D( 0, 3, 1, 1),
    new Line_2D( 1, 1, 3, 0),
    new Line_2D( 3, 0, 1,-1),
    new Line_2D( 1,-1, 0,-3),
    new Line_2D( 0,-3,-1,-1),
    new Line_2D(-1,-1,-3,0),
    new Line_2D(-3, 0,-1, 1),
    new Line_2D(-1, 1, 0, 3)
);
//define partition line set
$rPartition = new LineSet_2D(
    new Line_2D(-1, 1, 1,-1),
    new Line_2D(-1,-1, 1, 1)
);
//result line set:
$rResultSet    = LineSet_2D::createFromArray(array_merge(
    $rPolygon->getLines(), 
    $rPartition->getLines()
));
//for example, dump plain result:
var_dump($rResultSet->getPolygons());

你也可以找到这个例子here但我认为这不是您问题的确切解决方案,因为我的 LineSet_2D 类将返回所有环形多边形(即不仅是“片段”)。

关于algorithm - 特殊方向的多边形分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18073851/

相关文章:

javascript - googlemaps 多边形与 clipper.js 的结合

javascript - 沿四边形的周边对点进行排序

algorithm - 枚举有向图的所有最小有向环

c++ - 为什么我的合并排序代码比插入排序慢

algorithm - 合并排序比较

c++ - 二维平铺世界中矩形的并集

algorithm - 从一组范围中找到最频繁的数字 -

java - 在 Java 中组合多个矩形

algorithm - 面的邻接或边列表

python - 从距原点给定距离的图中查找路径的所有组合