问题标签 [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.
c++ - Boost Geometry:多边形和盒子的交集
我一直在尝试使用 Boost 几何库编写算法(如果重要的话,尝试编写盒子计数算法),其中一部分是处理多边形。虽然我想计算多边形边界与大量框(网格)的交集,但如果您愿意,它的外环也是如此。奇怪的是,函数 intersects(box[i], polygon) intersects(box[i], exterior_ring(polygon)) 和 inside(box[i],polygon) 给了我相同的结果。例如,对于一个完全在多边形内的盒子,我应该得到真、假、真。对于边界上的一个真,真,假。为什么它不像我认为的那样计算它?
boost - 增强多边形序列化
我在我的项目中使用 boost 几何,我需要序列化多边形。对于许多 boost 数据类型,我一直在使用 boost 序列化而没有问题,但是 boost 几何似乎目前不支持序列化,因为我在序列化文件夹中找不到任何标题。
有没有众所周知的方法来实现这一目标?
谢谢。
编辑:二进制序列化示例:Boost Polygon Serialization: Ring
c++ - 确定点是否在 boost::geometry::linear_ring 会计方向内
我想用boost::geometry确定点是否在多边形内。
我使用函数boost::geometry::within和 typeboost::geometry::linear_ring<boost::geometry::point_2d>
来指定轮廓。
如果我不需要考虑轮廓的方向,一切都可以正常工作。
但就我而言,我想说明方向。我的意思是,如果特定轮廓的内部区域被认为受其边界限制并且是有限的,那么倒置轮廓的内部区域应该是无限的 - 与初始轮廓区域的互补。
是否可以在within
功能中考虑轮廓的方向?
可以用以下代码表示:
上面的代码执行后ret1
,ret2
都是true
. 但我会的ret1 != ret2
。
一般来说,我需要在ret1 != ret2
任何时候获得功能testPoint
(当点恰好在边界上或多边形退化等时,我不考虑边界情况......)
我尝试了不同的策略来传递给boost::geometry::within
,但我没有得到我需要的东西。
似乎我需要或类似的功能在 中的某处实现boost::geometry
,因为inside的文档具有带孔的多边形示例。但我还没有意识到如何将它用于我的案例。
还有一个非常简单的解决方法。我只需要编写一个代码来确定轮廓的方向。然后我只是within
根据轮廓方向否定或不否定函数的结果。但是如果boost::geometry
已经实现了,我不想复制它。
c++ - 未能使用 boost::geometry::model::polygon
我正在尝试使用 boost::geometry::model:polygon ,但我无法让它工作,我还发现里面还有其他东西:
称为polygon_2d
我不知道我需要哪一个以及如何使用它。
我尝试编写以下代码:
但不幸的是它不起作用,我收到以下编译错误:
我的最终目标是创建一个多边形并检查点是否在他体内..
提前致谢
编辑:附加功能期望(Geometry& geometry, RangeOrPoint const& range_or_point);
boost - 我可以在本地磁盘上使用 boost 几何吗
我是增强几何的新手。就我而言,我需要处理大量数据节点,因此它们无法保存在内存中。是否可以将 boost 几何与本地文件系统一起使用?
c++ - boost::geometry 3D 多边形相交编译错误
此代码片段在 2D 版本中运行良好,但在 3D 版本中无法编译:
出现此模板错误:
谁能告诉我intersection
打电话有什么问题?我的应用是找到平面多边形的交集。我可以看到,一般情况下Poly3D
不必是平面的,所以它可能是这个错误的根源。有没有办法定义平面 3D 多边形类型?
c++ - boost::geometry::intersects 不适用于不同的几何类型?
我试图用来boost::geometry::intersects
检查一个线段是否与一个多边形相交。以下代码运行良好:
但是,如果我取消注释该行,bg::intersects(poly1, s1)
我会收到以下编译错误:
这是一个错误还是我忘记了什么?
c++ - Boost 多边形序列化:Ring
根据这个相关问题(Boost Polygon Serialization)。我正在尝试使用 Boost 序列化多边形。我现在遇到的问题是我正在尝试使用自定义 X、Y、点的多边形来编译一个示例,但是编译器在编译时抛出了这个错误:
就像没有定义任何函数来序列化一个环一样。由于 Ring 从 std::vector 扩展,并且如相关问题所述,没有必要为其序列化定义方法。但是编译器抱怨。
在这里,我有一个关于定义多边形及其序列化的完整示例:
关于如何使它工作的任何想法?
编辑:关于多边形序列化的全功能代码
c++ - 带有模板函数错误的 C++ 条件模板类型
我有这样一段代码
GCC 向我展示了很多错误,例如“错误:'' 和 'int' 类型的无效操作数到二进制 'operator<' p.set<1>(col.a());” 所以它只是尝试“比较”p.set
和1
boost 类确实有模板函数集,但编译器不将其用作函数。
如果我直接从 boost 类型制作 typedef,就像typedef bg::model::point<double, 5, bg::cs::cartesian> point;
一切正常。
我只想根据模板参数选择不同的尺寸highDimension
。但现在我不知道如何强迫 GCC 理解我:)
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 扩展名的其他配置?