我是boost::geometry
的新手。我尝试使用for_each_point来访问boost::segment
中的点,但它不起作用。我也尝试使用segment_view
来访问它,但该点的输出很奇怪
是否有任何机制可以迭代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';
}
}
答案 0 :(得分:0)
访问坐标的一般方法是通过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<>
,因此您应该可以通过first
和second
属性访问积分:
pt = segment.first;
segment_view
也应该有效,你有什么问题吗?如果存在错误,您可以在GitHub或Boost Trac报告错误。
是的,似乎目前(Boost 1.64)for_each_point
未针对细分实施。它可能应该。
你也可以使用你自己的类型,拥有你需要的成员,并使其适应Boost.Geometry Segment概念: