我有一个位于2D网格中的多边形:
(假设我能够绘制一条网格,每条线之间的距离相同)
我现在正在寻找一种算法或某种实现,它可以将多边形切割成沿网格的几个较小的多边形。
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...
}
是否有任何算法或实施的库可以做到这一点?
答案 0 :(得分:1)
General Polygon Clipper (GPC)库可以帮助您。它是一个强大而可靠的算法:给它两个多边形并得到两者的交集。所以它并不能完全满足您的需求,但它当然可以用来解决您的问题。例如。迭代每个网格方块。
答案 1 :(得分:0)
见Boost Geometry。也许它可以帮助你。