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

标签 c++ geometry polygons boost-geometry

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

但是,我经常从 Boost.Geometry 得到一个异常:boost.geometry overlay invalid input exception。我搜索了一下,发现这是 boost.Geometry 的一个已知错误,从 1.53 版本开始还没有修复。甚至即将发布的 v1.54 的文档也没有说明如何解决这个问题。

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

Boost overlay 异常在 Win7 x64 下的 MSVC 2010 和 2012、Linux Mint 14 下的 MinGW 和 Qt 4.8.1 中是一致的。

最佳答案

看来你对 Clipper 和 GPC 的看法是错误的“它们只输出 bool 结果”。这两个库都计算相交多边形 - 例如,查看 Clipper 页面上带有图片的代码片段。

关于c++ - 使用 GPC 或 Clipper 计算多边形相交面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16566172/

相关文章:

java - 简单的 Java 按钮显示一个圆圈

r - 对于一系列不规则形状的点和一组空间多边形,如何检测哪些点位于哪个多边形内?

c++ - C++ 异步释放数据

javascript - 如何用javascript在图表中表示XYZ轴?

java - 获取三角形中任意点的位置

r - 使用 R 中的 levelplot 将不同的多边形添加到栅格堆栈图中

javascript - 在 WebGL 中的 map 上绘制单个多边形 - 建筑物、国家边界等(循环通过索引缓冲区)

c++ - 数独回溯算法

c++ - 如何让 Visual Studio 在调试时进入#define?

c++ - 在Qt3D中进行碰撞检测的预期方法(或好方法)是什么?