小编Ada*_*icz的帖子

提升rtree的框与段有错误的交集

Boost rtree为段查询的某些交集提供了错误的交集结果.在这种情况下,边界框是y = 0时的y平面10×10平方.我正在查询从(2,1,0)到(2,1,10)的z对齐线.有趣的是,如果我使用一个框进行查询而不是一个段,那么它会按预期工作.当框不是平面时,也会出现此行为,只需将最小角移动到(0,-5,0),它仍然会发生.

我使用这个错误还是增强中的错误?

编辑:在Boost 1.56和1.59上试过这个.

#include <vector>
#include "gtest/gtest.h"
#include "gmock/gmock.h"
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point.hpp>
#include <boost/geometry/geometries/box.hpp>
#include <boost/geometry/geometries/segment.hpp>
#include <boost/geometry/index/rtree.hpp>
#include <vector>
#include <iterator>
#include <memory>

namespace bg = boost::geometry;
namespace bgi = boost::geometry::index;
typedef bg::model::point<double, 3, bg::cs::cartesian> point_def;
typedef bg::model::box<point_def> box;
typedef bg::model::segment<point_def> segment;
typedef std::pair<box, size_t> tri_box;
typedef bgi::rtree< tri_box, bgi::linear<8>> tree_type;

using namespace std;

TEST(boost_rtree, cant_intersect_box_with_segment) {
  vector<tri_box> buff(1);
  buff[0].first = box{point_def{0, 0, 0}, point_def{10, 0, 10}};
  buff[0].second = 1;
  tree_type tree(buff);

  segment query{point_def{2, …
Run Code Online (Sandbox Code Playgroud)

c++ boost r-tree boost-geometry

2
推荐指数
1
解决办法
636
查看次数

标签 统计

boost ×1

boost-geometry ×1

c++ ×1

r-tree ×1