类似于在 CGAL 中计算精确偏移量,我可以计算折线的“精确缓冲区”吗?

问题描述

是否有任何已经构建并准备好使用类似于 Cgal 的 offset_2 函数的 C++ 算法,但不是计算圆和多边形的 Minkowski 和,而是计算圆和折线的 Minkowski 和(即,折线的缓冲区)?

在申请中,这就是我想做的:

  1. 输入具有 n 个顶点的折线:([x_0,y_0],[x_1,y_1],...,[x_n-1,y_n-1])
  2. 找到这条折线的确切缓冲区(输出一个可能有洞的多边形)
  3. 提取每个单独的圆锥弧以测试与我拥有的其他线的交点。
  4. 显示这条缓冲多段线

谢谢

编辑:可能的解决方

我可以在每个顶点处生成一个半径为 r 的圆,并沿每个线段生成一个宽度为 2r 的矩形,然后将它们并集吗?

如果我正确理解了 Cgal 文档,我可以得到一个精确的解决方案(即由圆锥弧组成的东西),对吗?如果是这样,我们将不胜感激。

解决方法

因此,根据我建议的解决方案,折线和半径为 r 的圆的 Minkowski 和是每个顶点处的圆或半径 r 和宽度为 {{1} 的矩形的并集} 关于每个线段。

在此之后,我使用了 Boolean Set-Operations on General Polygons 以及其中的示例,它方便地采用矩形圆的并集。其主要特点是使用了 r 概念,这使我能够以线性函数和圆弧的形式获得精确解。

这是我的代码片段(注意我输入的折线使用复坐标):

GeneralPolygon_2