gpt4 book ai didi

c++ - 创建并检查点是否在多边形内

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:04 25 4
gpt4 key购买 nike

我有一个二维点的 std::list 并且想测试一个点 p 是否位于 vector 给定的多边形内。我已经发现 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 一起使用的正确方法是什么?

问候

最佳答案

为什么不坚持使用示例中给出的类型?参见 this page ,例如。

typedef boost::geometry::model::d2::point_xy<double> Point;
typedef boost::geometry::model::polygon<Point> Polygon;

对我来说这很管用。

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
//...

Polygon poly;
//... construct the polygon

Point p(4, 1);

std::cout << "within: " << (boost::geometry::within(p, poly) ? "yes" : "no") << std::endl;

关于c++ - 创建并检查点是否在多边形内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18208366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com