Я хотел бы вычислить точку пересечения между некоторым сегментом и полем. К сожалению, я не нашел такую функцию в библиотеке boost. у меня есть что-то вроде этого:Поиск точки пересечения с использованием библиотеки 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
. Обнаружение пересечения работает отлично, но я также должен знать, где он находится. К сожалению, я не могу использовать вектор очков вообще. Ну, кто-нибудь знает, как получить этот момент?
EDIT:
Я добавил intersection
функцию. Теперь, хотя я передаю интуитивно хорошие аргументы, он не компилируется. Похоже, нет никакого решения, потому что согласно данной функции ошибки для таких типов не реализовано.