2016-04-28 63 views
1

我想計算某個段和框之間的交點。不幸的是我還沒有在boost庫中找到這樣的函數。 我有這樣的事情:使用增強庫查找交點

using boost::geometry; 
using Point = model::point<double, 3, cs::cartesian>; 
using Box = model::box<Point>; 
using Line = model::segment<Point>; 

index::rtree<Box, index::quadratic<16>> rtree; 

... 

//EDIT 
std::vector<std::vector<Point>> getIntersection(Line line){ 
    std::vector<Box> boxes; 

    rtree.query(index::intersects(line), std::back_inserter(boxes)); 

    std::vector<std::vector<Point>> result; 
    for(const auto&box: boxes){ 
     std::vector<Point> points; 
     intersection(line, box, points); // can't compile 
     result.push_back(points); 
    } 

    return result; 
} 

所以你看我現在返回所有相交包含在rtree框。 交叉點檢測工作正常,但我也需要知道它在哪裏。可悲的是我根本不能使用點向量。 那麼,有誰知道如何得到這一點?

編輯:

我已經添加intersection功能。現在雖然我直觀地傳遞了好的參數,但它不能編譯。看起來像沒有解決方案,因爲根據給定的錯誤函數沒有實現這種類型。

回答

0

我想你可以進一步使用收集箱,並與功能找到交點:

template<typename Geometry1, typename Geometry2, typename GeometryOut> 
bool intersection(Geometry1 const & geometry1, 
        Geometry2 const & geometry2, 
        GeometryOut & geometry_out) 

看到Boost documentation

爲例