问题描述
是否有任何已经构建并准备好使用类似于 Cgal 的 offset_2 函数的 C++ 算法,但不是计算圆和多边形的 Minkowski 和,而是计算圆和折线的 Minkowski 和(即,折线的缓冲区)?
在申请中,这就是我想做的:
- 输入具有 n 个顶点的折线:([x_0,y_0],[x_1,y_1],...,[x_n-1,y_n-1])
- 找到这条折线的确切缓冲区(输出是一个可能有洞的多边形)
- 提取每个单独的圆锥弧以测试与我拥有的其他线的交点。
- 显示这条缓冲多段线
谢谢
编辑:可能的解决方案
我可以在每个顶点处生成一个半径为 r 的圆,并沿每个线段生成一个宽度为 2r 的矩形,然后将它们并集吗?
如果我正确理解了 Cgal 文档,我可以得到一个精确的解决方案(即由圆锥弧组成的东西),对吗?如果是这样,我们将不胜感激。
解决方法
因此,根据我建议的解决方案,折线和半径为 r
的圆的 Minkowski 和是每个顶点处的圆或半径 r
和宽度为 {{1} 的矩形的并集} 关于每个线段。
在此之后,我使用了 Boolean Set-Operations on General Polygons
以及其中的示例,它方便地采用矩形圆的并集。其主要特点是使用了 r
概念,这使我能够以线性函数和圆弧的形式获得精确解。
这是我的代码片段(注意我输入的折线使用复坐标):
GeneralPolygon_2