我有一个std::list
2D 点,想测试一个点是否p
位于向量给出的多边形内。我已经发现它boost::geometry
有一个within
测试这个的功能。不幸的是,我似乎以错误的方式使用它:
void someFunction(...) {
namespace bpl = boost::polygon;
typedef bpl::polygon_data<double> Polygon;
typedef bpl::polygon_traits<Polygon>::point_type Point;
Polygon polygon;
std::vector<Point> points;
for (std::list<MyPointType>::const_iterator it = myPolygonPoints.begin(); it != myPolygonPoints.end(); ++it) {
points.push_back(Point(it->GetX(),it->GetY()));
}
polygon.set(points.begin(),points.end());
// ...
if (!boost::geometry::within(Point(someX,someY),polygon)) {
doSomething();
}
//...
}
我收到各种编译错误,从within
. 那么构建多边形并使用它的正确方法是什么within
?
问候