boost-geometry 相关问题

Boost.Geometry是一个模板C ++库,包含在Boost中。它包含几何类(如点,线串,多边形)和函数(如距离,交点,联合)。 Boost.Geometry是基于概念的,用户可以使用他们自己的模型,例如,点。

如何正确分配Boost几何派生点类型?

在我的应用程序中,我想使用派生的增强几何点 类型来携带附加数据但未能这样做: #包括 #包括 在我的应用程序中,我想使用派生的增强几何点 键入以携带附加数据但未能这样做: #include <boost/geometry.hpp> #include <boost/geometry/geometries/geometries.hpp> #include <boost/geometry/geometries/point_xy.hpp> namespace bg = boost::geometry; using point_t = bg::model::d2::point_xy<double>; struct taggedPoint_t : point_t { taggedPoint_t(void* data) : mData(data) {} void* mData; }; int main() { point_t p1; bg::assign_values(p1, 1.0, 2.0); // OK taggedPoint_t p2(nullptr); bg::assign_values(p2, 2.0, 3.0); // Fails } 有人可以阐明如何正确执行此操作吗? 我还尝试注册点类型: BOOST_GEOMETRY_REGISTER_POINT_2D(taggedPoint_t, double, cs::cartesian, x, y) 但这也失败了。 Coliru 上的示例代码 BOOST_GEOMETRY_REGISTER_POINT_2D 使用专门针对 bg::model::d2::point_xy 的特征。你的班级没有这些。针对您的类型专门化这些特征,您可以在这里找到它们: https://www.boost.org/doc/libs/1_61_0/boost/geometry/geometries/point_xy.hpp 这不是一个好主意,因为您将在 namespace bg 中编写代码。但会起作用。 使用组合而不是继承来创建tagged_point_xy。像这样 struct taggedPoint_t { bg::point_t point; void* data; }; 事实上,调整你的观点的正确方法是忽略它从已知几何类型派生的,而只调整公共接口: #include <boost/geometry/geometries/register/point.hpp> BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET(taggedPoint_t, double, bg::cs::cartesian, x, y, x, y) 这有效:Live On Coliru 当然,您也可以提供所有必需的特征并进行概括: template <typename Base> struct taggedPoint : Base { using base_type = Base; taggedPoint(void* data) : mData(data) {} void* mData; }; 你可以让他们明确地“继承”所有特征: namespace boost::geometry::traits { template <typename B> struct tag<taggedPoint<B>> : tag<B> {}; template <typename B> struct dimension<taggedPoint<B>> : dimension<B> {}; template <typename B> struct coordinate_type<taggedPoint<B>> : coordinate_type<B> {}; template <typename B> struct coordinate_system<taggedPoint<B>> : coordinate_system<B> {}; template <typename B> struct access<taggedPoint<B>, 0> : access<B, 0> {}; template <typename B> struct access<taggedPoint<B>, 1> : access<B, 1> {}; template <typename B> struct access<taggedPoint<B>, 2> : access<B, 2> {}; } // namespace boost::geometry::traits 现在您无需进一步注册即可使用它:Live On Coliru 注意事项 https://stackoverflow.com/a/29065421/85371 - 当与标准 Boost Geometry 算法一起使用时,您的“丰富点”数据通常会丢失。请参阅Adam 的回答,了解如何使用自定义策略的提示(这对我来说太先进了)

回答 2 投票 0

boost::geometry 无法识别三个点在一条线上(boost::geometry::difference 失败)

我使用 boost::geometry 进行复杂的折线处理,我需要对它们进行布尔运算。我遇到了一个奇怪的情况,当 boost::geometry 无法看到 3 个点都在一条直线上时,

回答 1 投票 0

Boost几何rtree查找迭代器以精确匹配盒子

将新框插入 rtree 时,我想首先检查树中是否已存在相同的框。如果是,我只想获取该值,否则我需要插入一个新值。什么是...

回答 2 投票 0

带有 boost.geometry.index.rtree 的第四维

我需要优化空间索引的边缘情况,描述如下: 空间索引包含大量分布的 3D 几何图形(3D 点和 2.5D 拉伸多边形)...

回答 1 投票 0

boost r-tree 错误:std::pair 的第一种类型必须是 Indexable。我该如何解决这个问题?

我正在使用 boost::geometry::index::rtree 和 Eigen::Vector 给出的点类型。为此,我声明 命名空间提升 { 命名空间几何 { 名称空间特征 { ...

回答 1 投票 0

如何使用Boost获得二维点的凸壳的面积?

我是新来的boost,我尝试的一切结果都是满屏的编译器错误。这是我最近的尝试。#include #include

回答 1 投票 0

内存映射提升树所需的估计大小

我们有一个场景,其中我们动态增长用于boost的r树几何索引的内存映射文件。我们还利用了boost的进程间内存映射文件api。力学已经...

回答 1 投票 1

如何找到形成两个矩形之间最近距离的两个点?

我正在尝试找到一种算法,该算法将找到代表两个矩形之间最接近距离的两个点。就像点C和点J在图像波纹管上形成最小的距离:我试图不... ...>

回答 1 投票 1

Boost Geometry:assertion_failed error C ++

我具有以下头文件以使用增强几何类型:#include #include #include

回答 1 投票 1

如何通过boost :: geometry计算多边形的旋转体积?

给出一个多边形,如:boost :: geometry :: model :: polygon shape;如何计算实体的体积或形状相对于OX轴的旋转?

回答 2 投票 0

错误-自定义数据类型作为带有boost :: geometry的有效负载

#include #include #include #include #include #include ...

回答 1 投票 0

使用Boost库分割几何图形

可以使用Boost库对几何图形执行拆分操作吗?] >> [[

回答 2 投票 0

Boost :: Geometry:如何在multi_polygon中连接相交的多边形?

所以我想在multi_polygon中加入所有相互关联的poligons。怎么办这样的事情?我们想要优化这样的图像(一个绿色的multi_polygon)(我们可以看到黄色的虚线 - 结果......

回答 2 投票 11

具有内部边界的区域与增强几何的几何差异

我想用Boost几何来获取两个几何对象的几何差异。第一个几何体是:我总是有构成几何体的线段。我有坐标和......

回答 1 投票 1

使用boost :: geometry :: buffer函数

这是我第一次使用boost库,所以我对它很不舒服,我可能做错了。我在使用boost :: geometry :: buffer()函数时遇到了一些问题。 ...

回答 1 投票 0

如何使用boost处理lat long值?

在我的应用程序中,我收到以下形式的纬度/经度输入:“N48 E010”,“N40 E020”,“S30 W110”...我期待的是检查这些点是否形成有效多边形...

回答 1 投票 0

使用boost :: geometry :: intersects时的运行时错误

当使用boost :: geometry :: intersects判断两个几何是否相互交叉时,我得到一个运行时错误,我得到这个错误:test:/bigdisk/geo.algorithms/mason_packages/headers/boost/1.65.1/。 ..

回答 1 投票 1

Boost几何交叉点无法正确输出

从下面的代码我计算两个多边形的交集。我希望如果输出不是多边形,则输出可以为NULL。但是输出是(((240,52.9999),(240,53),(240,53),(240,52.9999)))....

回答 1 投票 0

Boost.Geometry找不到多边形线交叉的第二个点

我正在尝试使用Boost.Geometry库来查找square和line,model :: ring的交集 > ring {{0,0},{2,0},{2,2},{0,2}};模型::多边形

回答 1 投票 1

使用索引几何图形增强多边形

我需要在2D计划上进行一些多边形计算。通常,是isInside操作。我找到了boost :: Polygon API,但我的观点是在一个大数组中。那就是我称之为索引几何。见http:// ...

回答 1 投票 1

© www.soinside.com 2019 - 2024. All rights reserved.