我有一个 2D 粒子系统,其中粒子表示为椭圆。我需要计算椭圆 - 椭圆重叠区域,但这是一个很难分析的问题 Ellipse-Ellipse Overlap .我现在将我的椭圆表示为 20 边形,以便它们被“多边形化”,并且我正在使用 Boost.Geometry
进行必要的计算。
但是,我经常从 Boost.Geometry
得到一个异常:boost.geometry overlay invalid input exception
。我搜索了一下,发现这是 boost.Geometry
的一个已知错误,从 1.53 版本开始还没有修复。甚至即将发布的 v1.54 的文档也没有说明如何解决这个问题。
我偶然发现了 Clipper和 GPC - 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/