问:如何访问boost :: segment中点的坐标?

问:如何访问boost :: segment中点的坐标?

问题描述:

我是boost::geometry的新用户。我尝试使用for_each_point访问boost::segment中的点,但它不起作用。我也尝试使用segment_view来访问它,但点的输出很奇怪。
是否有任何机制可以遍历boost:: segment中的每个点?问:如何访问boost :: segment中点的坐标?

namespace bg = boost::geometry; 

typedef bg::model::d2::point_xy<int> CleanPoint; 
typedef boost::geometry::model::segment<CleanPoint> CleanSegment; 
typedef boost::geometry::segment_view<CleanSegment> CleanSegmentView; 

BOOST_FOREACH(CleanSegment seg, frontier_cells_){ 
    CleanSegmentView view(seg); 

    //Iterating over the points of this segment 
    for (boost::range_iterator<CleanSegmentView const>::type it = boost::begin(view); 
        it != boost::end(view); ++it) 
    { 
     std::cout << " Point = " << boost::geometry::dsv(*it)<<'\n'; 
    } 
}  

访问坐标的一般方法是通过get/set免费功能:

pt = point{get<0, 0>(segment), get<0, 1>(segment)}; 
set<0, 0>(segment, get<0>(pt)); 
set<0, 1>(segment, get<1>(pt)); 

boost::model::segment<>std::pair<>派生,所以你应该能够通过firstsecond属性访问点:

pt = segment.first; 

segment_view也应该工作,你有什么问题呢?如果有错误,您可以在GitHubBoost Trac上报告。


是的,这似乎是目前(升压1.64)for_each_point没有为段实施。它可能应该。


你也可以用你需要你自己有类型的成员,它适应Boost.Geometry段的概念: