算法:通过网格切割多边形

时间:2012-09-17 14:01:58

标签: algorithm grid polygon

我有一个位于2D网格中的多边形:
(假设我能够绘制一条网格,每条线之间的距离相同)

enter image description here

我现在正在寻找一种算法或某种实现,它可以将多边形切割成沿网格的几个较小的多边形。

C ++中的一些示例代码基本上显示了我想要做的事情:

struct Point2D
{
    double x;
    double y;
}

struct Polygon
{
    std::vector<Point2D> points;
}

/**
 * givenPolygon is the 'big' polygon which should be divided
 * gridSize is the distance between the gridlines
 * return value is a vector of the resulting subpolygons
 */
std::vector<Polygon> getSubpolygons( Polygon givenPolygon, double gridSize )
{
    Code here...
}

是否有任何算法或实施的库可以做到这一点?

2 个答案:

答案 0 :(得分:1)

General Polygon Clipper (GPC)库可以帮助您。它是一个强大而可靠的算法:给它两个多边形并得到两者的交集。所以它并不能完全满足您的需求,但它当然可以用来解决您的问题。例如。迭代每个网格方块。

答案 1 :(得分:0)

Boost Geometry。也许它可以帮助你。