7

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...
}

それを行うことができるアルゴリズムまたは実装されたライブラリはありますか?

4

2 に答える 2

1

General Polygon Clipper(GPC)ライブラリがこれに役立ちます。これは堅牢で信頼性の高いアルゴリズムです。2つのポリゴンを指定し、2つの交差点を取得します。したがって、それはあなたが望むことを正確には行いませんが、それは確かにあなたの問題を解決するために使用することができます。たとえば、各グリッドの正方形を繰り返します。

于 2012-09-17T14:37:30.537 に答える
0

BoostGeometryを参照してください。多分それはあなたを助けます。

于 2013-09-11T17:26:44.210 に答える