2017-03-17 5 views
0

저는 boost::geometry을 처음 사용합니다. 나는 for_each_point를 사용하여 boost::segment에있는 지점에 액세스하려고 시도했지만 작동하지 않습니다. 또한 segment_view을 사용하여 액세스하려했지만 지점의 출력이 이상합니다.
boost:: segment의 각 지점을 반복 할 수있는 메커니즘이 있습니까?Q : 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

접근 좌표의 일반적인 방법은 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<>은 그래서 당신이 firstsecond 속성을 통해 포인트에 액세스 할 수 있어야합니다 std::pair<>에서 파생된다 :

pt = segment.first; 

segment_view도 작동해야합니다. 어떤 문제가 있습니까? 버그가있는 경우 GitHub 또는 Boost Trac으로 신고 할 수 있습니다.


예, 현재 for_each_point 세그먼트에 대한 구현되지 않습니다 (1.64이 부스트) 것으로 보인다. 그것은 아마해야합니다.


당신은 또한 당신이 필요로 자신의 유형 가진 멤버를 사용 Boost.Geometry 세그먼트 개념에 적응 수 :