rtree 是可索引的断言
rtree is indexable assertion
这是我的代码片段。我正在尝试为顶点类对象RTreeVertex创建一个rtree树。
class Entity {
public:
int num;
public:
Entity(int nr): num(nr){ }
virtual ~Entity(){}
bool operator==(const Entity& b)
{
return num == b.num;
}
};
class Vertex : public Entity {
public :
struct Coord{
double X, Y, Z;
}Pos;
Vertex(int num=0, double X=0., double Y=0., double Z=0.): Entity (num)
{
Pos.X = X;
Pos.Y = Y;
Pos.Z = Z;
}
};
以下是我声明 rtree 的方式:
#include <boost/geometry/index/rtree.hpp>
namespace bgi = boost::geometry::index;
bgi::rtree< Vertex, bgi::linear<32> > RTreeVertex;
但我收到一个错误,说顶点不可索引。
还有一个更普遍的问题:使用 rtree 来存储与网格相关的数据是个好主意吗?
您必须使用提升几何体注册点类。它为您的班级创造了一系列特征。我测试了这个,它有效。
class Vertex : public Entity {
public :
double X, Y, Z;
Vertex(int num=0, double x=0., double y=0., double z=0.): Entity (num)
{
X = x;
Y = y;
Z = z;
}
};
BOOST_GEOMETRY_REGISTER_POINT_3D( Vertex, double, bg::cs::cartesian, X, X, X );
#include <boost/geometry/index/rtree.hpp>
namespace bgi = boost::geometry::index;
bgi::rtree< Vertex, bgi::linear<32> > RTreeVertex;
我无法让它在带有 Pos::X...的结构中与 X,Y,Z 一起工作,可能有一种方法。您可以在 boost.org 上加入几何组。他们是几何专家。
补遗:我很好奇,所以我看了如何注册..工程。跟:
BOOST_GEOMETRY_REGISTER_POINT_3D( Vertex, double, bg::cs::cartesian, Pos.X, Pos.Y, Pos.Z );
您可以将您的结构用于 x,y,z。
和命名空间 bg = boost::geometry;
是我上面使用的名称空间
相关文章:
- 数组索引的值没有增加
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 重载元组索引运算符-C++
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- 跟随整数索引列表的自定义类迭代器
- 如何在for循环中包含两个索引值的测试条件
- D3D11-将混合权重和索引传递到顶点着色器
- 将转换字符键入 int 以用作向量C++的索引
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 尝试使用 std::vector<std::thread时出现静态断言失败错误>
- uint_not_usable_without_attribute在业力规则中使用数字生成器时静态断言失败
- 特征 3 断言在求解线性系统时失败 - 据我所知,这是由于特征中的无效索引
- rtree 是可索引的断言
- QList::at 中的 Qt 断言失败<T>:"索引超出范围
- QList::at 中的 qt 断言失败<T>:"索引超出范围"
- C++矢量:使用矢量数组索引-1时断言