问题标签 [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 回答
739 浏览

c++ - 使用 BOOST_GEOMETRY_REGISTER_RING

我很难理解如何将我自己的类型注册为boost::geometry::model::ring. 我有自己的点课:

并且环存储为std::vector<Point>. 因此,我这样注册它们:

现在我想纠正一个环的方向,事实上,以下编译:

麻烦的是,如何定义环的“正确”方向?使用时更明显boost::geometry::model::polygon,模板参数允许我指定预期的方向。但是,以下内容无法编译:

显然,我自己的环类型无法转换为clockwise_closed_polygon.

所以我有两个问题:

  1. 如何指定正确的环方向?
  2. 如上所述,为什么我的环类型不能与多边形一起使用?
0 投票
1 回答
225 浏览

boost-geometry - Boost几何:轨道上的点

我在一个球体(或 WGS84 椭圆体,如果使用地理扩展)上有两个点 A 和 B。这两点定义了一个大圆圈。我希望在那个大圆上找到一个点 M 的坐标,它与 A 有一定的距离(从 A 到 B)。

举个例子:一艘船在一个大圆上从 A 到 B:知道它的速度我想知道它在给定时间的位置。

有什么办法可以用 boost-geometric 做到这一点?

谢谢!

0 投票
1 回答
1090 浏览

c++ - 提升几何cartesian2d.hpp

我尝试在此处的示例中使用 Boost Geometry 来执行此剪切示例

但是在最新的 Boost 库中我找不到...

boost/geometry/geometries/cartesian2d.hpp

有谁知道我在哪里可以找到这个文件?或者这个教程太旧了,文件现在已经过时了?

0 投票
2 回答
480 浏览

ios - Boost::Geometry (1.53) 与 iOS

我想在我的 iOS 项目中使用 Boost::Geometry 库。经过一天的几次尝试后,我来到了 SO。

由于 Geometry 是一个仅限 Header 的库,因此我认为不需要二进制文件,只需添加 *.hpp 文件就足够了。我对吗?

这是我所做的:

  1. 下载 Boost 1.53.0
  2. boost将根文件夹提取到libs/boost文件夹。所以 boost root 的路径是 project/libs/boost/boost (其中包含geometry
  3. 向 xcode 添加了新的 boost 文件夹
  4. 在构建/目标中,设置Header Search Path
    • “$(PROJECT_NAME)/../libs/boost”
    • "$(PROJECT_NAME)/libs/boost"
    • “$(PROJECT_NAME)/../libs/boost/boost”
    • "$(PROJECT_NAME)/libs/boost/boost"
  5. 得到以下编译器错误:
    • #include "boost/[geometry]/geometry.hpp"抛出“未找到 boost/geometry.hpp 文件”
    • #include "geometry.hpp"在geometry.hpp 中抛出错误“boost/geometry/core/cs.hpp file not found”

这是我的项目结构:

我错过了什么?

0 投票
1 回答
223 浏览

c++ - Intersection_inserter 未在此范围内声明

我正在尝试计算两个椭圆之间的重叠区域。我现在正在用多边形逼近椭圆,Boost.Geometry并且根据这个答案,我找到了一个显然使用旧版本的示例。从这个问题的第二个答案中,我可以看到这也是一个旧示例,因为 v1.53 中没有一些头文件。我已将其替换为:

并添加了以下代码:

几乎一切正常。唯一的问题是:

我收到一个错误:

此处有关此问题的 boost 文档来自 2009 年,所以我想它不再适用了……据我所知,他们的示例与我的示例相同。我在头文件intersection.hpp中找到了定义intersection_inserter 的位置,但我无法对其进行正面或反面...

我在 win7 的 VS2012 和 Linux Mint 14 的 Qt 4.7.4 中都遇到了同样的错误。任何帮助将不胜感激!

0 投票
1 回答
1073 浏览

c++ - 与 Boost::geometry 的多边形相交严重的性能下降

我有一个粒子系统,我用boost::geometry我的椭圆粒子近似为多边形,然后使用库的交集函数来找到重叠区域。我正在计算一个“内部”和“外部”椭圆(多边形)区域来为每个粒子-粒子相互作用分配一个“势”。

我的潜在功能是:

“多边形化”功能是:

返回区域为:

只要不是针对同一个细胞(粒子),就会为每个细胞(粒子)调用该函数。以前,使用另一种方法,我的算法的一次迭代对于 100 个粒子的一次迭代大约需要 43 毫秒。现在大约需要 1 分钟(!!!),所以我想我做错了什么!

我只在 Win7 64bit 下的 MSVC2012 中对此进行了测试。我将使用 Qt 4.7.4 报告 Linux Mint。

编辑:我已经用 Qt 4.7.4 在 Linux Mint 上进行了测试,它运行得非常合理;每次迭代可能需要 90-100 毫秒,这很好。不知道win7有什么问题...

0 投票
0 回答
260 浏览

c++ - Boost几何正确

boost 1.52.0 中是否有机会纠正 3d 多边形?使用point_xy它效果很好,但不适用于point<double, double, double>3d。还是我应该自己测试方向?

谢谢

0 投票
3 回答
4438 浏览

c++ - 使用 boost 转换度分秒弧度 boost_1_48_0

我有这个代码工作:

和这个:

但我想做度分和秒,然后再转换成弧度。

我花了一天时间试图了解升压系统是如何工作的——例子有点少,所以我想知道是否有人可以展示一个简单的例子?

在此先感谢 8+)

编辑

我想我需要更好地理解声明的工作原理。:)

编辑2:

非常感谢 - 也许我花了整个时间寻找使用 boost 的方法,但设施不存在!我认为这可能是因为我在这里找到了这个过时的代码http://www.boost.org/doc/libs/1_47_0/libs/geometry/doc/doxy/doxygen_input/sourcecode/doxygen_1.cpp

0 投票
3 回答
2567 浏览

c++ - 使用 GPC 或 Clipper 计算多边形相交面积

我有一个 2D 粒子系统,其中粒子表示为椭圆。我需要计算椭圆 - 椭圆重叠区域,但这是一个很难分析的问题Ellipse-Ellipse Overlap。我现在将我的椭圆表示为 20 边形,以便它们被“多边形化”并且我正在使用Boost.Geometry它来进行必要的计算。

Boost.Geometry但是,很多时候,我从:中得到一个例外boost.geometry overlay invalid input exception。我搜索发现这是boost.Geometry1.53 版本的一个已知错误并且没有修复。甚至即将发布的 v1.54 的文档也没有说明解决此问题的任何内容。

我偶然发现了ClipperGPC-General Polygon Clipper Library。他们似乎做我想做的事,但他们只输出布尔结果。有谁知道是否有办法用这些库输出计算出的交叉点的面积?我想由于交点作为某种多边形存储在内存中,我可以使用三角测量或其他方法来计算面积。任何指针将不胜感激!

Boost overlay例外情况在 MSVC 2010 和 2012 下的 Win7 x64、MinGW 和 Qt 4.8.1 下的 Linux Mint 14 下是一致的。

0 投票
2 回答
3015 浏览

geometry - 我应该使用哪个 CAD/几何库:CGAL Open CASCADE 或 Boost::Geometry 其他?

对于可定制的激光切割抽屉项目,我希望能够以编程方式在任何两个相交的垂直“2D”对象(具有宽度)之间创建连接。为此,我需要:

  • 以某种标准格式加载和保存 2D 对象。
  • 拉伸 2D 对象,并对 2D 对象进行标准操作(特别是对象的减法)。
  • 相交 2 个对象,并能够确定相交的“线”。

您会为此建议哪个库/工具?你能估计掌握它来完成上述任务会有多困难吗?

谢谢,

罗南