问题标签 [boost-geometry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2295 浏览

c++ - Boost Geometry:多边形和盒子的交集

我一直在尝试使用 Boost 几何库编写算法(如果重要的话,尝试编写盒子计数算法),其中一部分是处理多边形。虽然我想计算多边形边界与大量框(网格)的交集,但如果您愿意,它的外环也是如此。奇怪的是,函数 intersects(box[i], polygon) intersects(box[i], exterior_ring(polygon)) 和 inside(box[i],polygon) 给了我相同的结果。例如,对于一个完全在多边形内的盒子,我应该得到真、假、真。对于边界上的一个真,真,假。为什么它不像我认为的那样计算它?

0 投票
2 回答
971 浏览

boost - 增强多边形序列化

我在我的项目中使用 boost 几何,我需要序列化多边形。对于许多 boost 数据类型,我一直在使用 boost 序列化而没有问题,但是 boost 几何似乎目前不支持序列化,因为我在序列化文件夹中找不到任何标题。

有没有众所周知的方法来实现这一目标?

谢谢。

编辑:二进制序列化示例:Boost Polygon Serialization: Ring

0 投票
2 回答
1034 浏览

c++ - 确定点是否在 boost::geometry::linear_ring 会计方向内

我想用boost::geometry确定点是否在多边形内。

我使用函数boost::geometry::within和 typeboost::geometry::linear_ring<boost::geometry::point_2d>来指定轮廓。

如果我不需要考虑轮廓的方向,一切都可以正常工作。
但就我而言,我想说明方向。我的意思是,如果特定轮廓的内部区域被认为受其边界限制并且是有限的,那么倒置轮廓的内部区域应该是无限的 - 与初始轮廓区域的互补。

是否可以在within功能中考虑轮廓的方向?

可以用以下代码表示:

上面的代码执行后ret1ret2都是true. 但我会的ret1 != ret2

一般来说,我需要在ret1 != ret2任何时候获得功能testPoint(当点恰好在边界上或多边形退化等时,我不考虑边界情况......)

我尝试了不同的策略来传递给boost::geometry::within,但我没有得到我需要的东西。

似乎我需要或类似的功能在 中的某处实现boost::geometry,因为inside的文档具有带孔的多边形示例。但我还没有意识到如何将它用于我的案例。

还有一个非常简单的解决方法。我只需要编写一个代码来确定轮廓的方向。然后我只是within根据轮廓方向否定或不否定函数的结果。但是如果boost::geometry已经实现了,我不想复制它。

0 投票
1 回答
272 浏览

c++ - 未能使用 boost::geometry::model::polygon

我正在尝试使用 boost::geometry::model:polygon ,但我无法让它工作,我还发现里面还有其他东西:

称为polygon_2d

我不知道我需要哪一个以及如何使用它。

我尝试编写以下代码:

但不幸的是它不起作用,我收到以下编译错误:

我的最终目标是创建一个多边形并检查点是否在他体内..

提前致谢

编辑:附加功能期望(Geometry& geometry, RangeOrPoint const& range_or_point);

0 投票
1 回答
49 浏览

boost - 我可以在本地磁盘上使用 boost 几何吗

我是增强几何的新手。就我而言,我需要处理大量数据节点,因此它们无法保存在内存中。是否可以将 boost 几何与本地文件系统一起使用?

0 投票
1 回答
2110 浏览

c++ - boost::geometry 3D 多边形相交编译错误

此代码片段在 2D 版本中运行良好,但在 3D 版本中无法编译:

出现此模板错误:

谁能告诉我intersection打电话有什么问题?我的应用是找到平面多边形的交集。我可以看到,一般情况下Poly3D不必是平面的,所以它可能是这个错误的根源。有没有办法定义平面 3D 多边形类型?

0 投票
2 回答
2270 浏览

c++ - boost::geometry::intersects 不适用于不同的几何类型?

我试图用来boost::geometry::intersects检查一个线段是否与一个多边形相交。以下代码运行良好:

但是,如果我取消注释该行,bg::intersects(poly1, s1)我会收到以下编译错误:

这是一个错误还是我忘记了什么?

0 投票
3 回答
1272 浏览

c++ - Boost 多边形序列化:Ring

根据这个相关问题(Boost Polygon Serialization)。我正在尝试使用 Boost 序列化多边形。我现在遇到的问题是我正在尝试使用自定义 X、Y、点的多边形来编译一个示例,但是编译器在编译时抛出了这个错误:

就像没有定义任何函数来序列化一个环一样。由于 Ring 从 std::vector 扩展,并且如相关问题所述,没有必要为其序列化定义方法。但是编译器抱怨。

在这里,我有一个关于定义多边形及其序列化的完整示例:

关于如何使它工作的任何想法?

编辑:关于多边形序列化的全功能代码

0 投票
1 回答
212 浏览

c++ - 带有模板函数错误的 C++ 条件模板类型

我有这样一段代码

GCC 向我展示了很多错误,例如“错误:'' 和 'int' 类型的无效操作数到二进制 'operator<' p.set<1>(col.a());” 所以它只是尝试“比较”p.set1

boost 类确实有模板函数集,但编译器不将其用作函数。

如果我直接从 boost 类型制作 typedef,就像typedef bg::model::point<double, 5, bg::cs::cartesian> point;一切正常。

我只想根据模板参数选择不同的尺寸highDimension。但现在我不知道如何强迫 GCC 理解我:)

0 投票
2 回答
2265 浏览

ubuntu - boost/geometry.hpp:没有这样的文件或目录

我正在尝试为 ruby​​ 编译一个 c 扩展。它需要 boost 库。

我跑了sudo apt-get install libboost-all-dev(据说它安装了 boost 库),但是当我尝试make在扩展库上运行时,我得到了boost/geometry.hpp: No such file or directory. 在我的 MacBook pro 上,我可以使用自制软件和brew install boost.

我正在运行 Ubuntu 12.04。

是否需要将标头公开给我的 c 扩展名的其他配置?