C++ 在boost::geometry中初始化多边形

C++ 在boost::geometry中初始化多边形,c++,boost,polygon,boost-geometry,C++,Boost,Polygon,Boost Geometry,我不熟悉建议包含在boost中的通用几何体库: http://geometrylibrary.geodan.nl/ 我有两个向量向量Xb,Yb,我正试图从中创建多边形。我试图从以下代码片段中获得一些信息: polygon_2d P; vector<double>::const_iterator xi; vector<double>::const_iterator yi; for (xi=Xb.begin(), yi=Yb.begin(); xi!=Xb.en

我不熟悉建议包含在boost中的通用几何体库:

http://geometrylibrary.geodan.nl/
我有两个向量
向量Xb,Yb
,我正试图从中创建多边形。我试图从以下代码片段中获得一些信息:

 polygon_2d P;

 vector<double>::const_iterator xi;
 vector<double>::const_iterator yi;

 for (xi=Xb.begin(), yi=Yb.begin(); xi!=Xb.end(); ++xi, ++yi)
  P.push_back (make<point_2d>(*xi, *yi));
polygon_2dp;
矢席::
向量::常量迭代器yi;
对于(X= xb.NoX),Yi=yb.NoX();席!= XB.Enter();++席席,++i)
P.推回(make(*xi,*yi));
上述代码不起作用,抱怨
p
没有
push_back
成员功能。如何从具有坐标的点初始化多边形
向量Xb,向量Yb

附加(p,make(*xi,*yi));
append(P, make<point_2d>(*xi, *yi));

以下是您最初提出的问题的扩展示例,作为Kirill回答下面的评论:多边形之间是否可能相交?

是的,多边形交点由

#包括
#包括
#包括
#包括
#包括
使用名称空间boost::geometry;
内部主(空)
{
//定义多边形并填充外圈。
多边形_2da;
{
常数双c[][2]={
{160, 330}, {60, 260}, {20, 150}, {60, 40}, {190, 20}, {270, 130}, {260, 250}, {160, 330}
};
转让(a、c);
}
正确(a);

std::cout还可以使用元组初始化多边形

#include <boost/geometry/geometries/adapted/boost_tuple.hpp>

一个快速的注意,你提到的特定库可能会在审查过程中幸存下来。你今天最好的选择是为通用多边形裁剪程序库编写一个轻量级的C++包装,因为没有提出的2D多边形操作提交到性能GPC附近的任何地方。谢谢你的建议。GPC看起来像是一个很好的库,但是它似乎缺少了一个对我来说很重要的特征——即计算多边形面积的能力。Dzhelil,幸运的是,面积算法是很小的实现自己的。@ BeTa-Chh——为您和其他的信息,它幸存下来,并成为Boost C++库的一部分。s作为Boost.geometryThanks包含在Boost中,这解决了上述问题。但是,现在我遇到了另一个问题。尝试将多边形_2d与另一个多边形_2d相交会返回错误。示例仅显示如何在长方体_2d和多边形_2d之间相交。多边形之间是否可能相交?
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
boost::geometry::assign_points(
    polygon, boost::assign::tuple_list_of
        (300, 330) (190, 270) (150, 170) (150, 110) (250, 30) (380, 50)
        (380, 250) (300, 330)
);