如何在boost ::内添加策略类型

时间:2017-04-22 10:01:08

标签: c++ boost boost-geometry

我正在使用boost库来检查使用within函数的多边形点。

我正在使用boost网站提供的代码示例进行测试。我想改变策略类型。

文档说“如果一个点正好位于几何的边界上,结果取决于策略。默认策略(绕组(坐标系不可知))在这种情况下返回false。”

我希望在边界上考虑点数。我应该使用哪种策略? 如何添加策略类型?

我尝试使用franklin策略类型进行测试但无法添加它,下面的代码会出现此错误:

  

错误C2039:'get':不是'boost :: geometry :: core_dispatch :: access,double,1,boost :: integral_constant>'

的成员
#include <iostream>
#include <list>

#include <string> 

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

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

#include <boost/geometry/strategies/cartesian/point_in_poly_franklin.hpp>

int main()
{
    typedef boost::geometry::model::d2::point_xy<double> point_type;
    typedef boost::geometry::model::polygon<point_type> polygon_type;
    typedef boost::geometry::model::segment<point_type> seg;
    typedef boost::geometry::strategy::within::franklin<point_type, seg, void> fran;

    std::string str;
    fran fran_;

    polygon_type poly;

    boost::geometry::read_wkt("POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7)(2 1.3)(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", poly);

    point_type p(4, 1);

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

    system("pause");
    return 0;
}

0 个答案:

没有答案