Boost :: Polygon:从polygon_set获取多边形列表

时间:2016-12-24 10:15:32

标签: c++ boost polygons boost-polygon

我正在构建输出对象的复杂网格的程序。为了减少面向相同方向的相邻多边形的数量,我决定使用Boost :: Polygon。现在我遇到了麻烦 - 首先,程序并不想输出梯形的正确数据,这在文档中得到了承诺(或者我可能以错误的方式进行)。其次,Boost库在将polygon_set_data(带孔的多边形集)表示为一组简单多边形时也会遇到麻烦。我想得到一个有效的解决方案 - 首先我将简单的多边形(没有孔)一起添加到boost :: polygon_set类型中,之后(假设Boost计算所有操作并且我有很少的大多边形)我想得到简单的boost ::多边形数据。

#include "SomeLibrary.h"
#include <boost/polygon/polygon.hpp>
#include <cassert>

using namespace boost::polygon::operators;
using namespace boost::polygon;
using namespace std;


typedef point_data<float> point;
typedef polygon_set_data<float> polygon_set;
typedef polygon_with_holes_data<float> polygon;
typedef pair<point, point> edge;


void FracturePolygon::Dissolve() {
    polygon_set BPolygon;

    for (auto p : OutMesh.Faces()) { //p is simple polygon data, list of vertices
        vector<point> pts;
        for (int i = 0; i < p.NumVertices(); i++) {
            auto v = InPolygon.MapTo2D(p.Vertex(i)); //i get 2d point data
            pts.push_back(point(v.x, v.y)); //now i have boost::point data
        }
        polygon poly;
        set_points(poly, pts.begin(), pts.end()); //i get boost::polygon type
        BPolygon += poly; //i add this simple polygon to polygon_set container
    }

//now i expect some magic which will give me list of polygons from polygon_set type.
...
}

0 个答案:

没有答案