4

相关问题:
膨胀/放气(偏移、缓冲)多边形的算法

不同之处在于我正在寻找一种将给定折线膨胀为多边形的方法:

折线,周围有一个框

我有以下输入:

  • 形成折线的二维点列表(草图中的亮绿色)
  • 线宽

输出应该是一个多边形,它显示线条看起来如何被宽度扩展。

我原本以为我可以为此使用Boost::Geometry::buffer,不幸的是它现在似乎只支持盒子。最好使用Boost::GeometryGDAL/OGR的解决方案。

更新:
我选择使用 Clipper 库及其OffsetPolyLines函数。一旦 Boost Geometry 发布并支持折线缓冲区,我将切换到 Boost(因为其他所有东西都在我的软件中使用 Boost 运行)。

4

2 回答 2

3

我知道 OP 更喜欢 Boost::Geometry 或 GDAL/OGR 中的解决方案,但是,如果其他人关注这个线程,我的Clipper 库也可以进行折线偏移。(SourceForge 存储库中即将发布的版本 6简化了这一点,它现在也支持开放路径(折线)裁剪。)

于 2013-08-27T19:07:08.023 回答
2

Boost.Geometry 扩展(来自 Trunk)可以做到这一点。它尚未发布。它可以缓冲多边形、多边形、点和多几何图形。您可以指定尖角(斜接)或圆角。它还不是完美的,但是您上面的示例中的线条应该不会出现任何问题。

发布的版本(1.54)还没有这个,下一个也没有。所以现在你必须使用中继(来自 SVN)

于 2013-08-27T16:09:36.947 回答