【发布时间】:2021-07-15 18:49:46
【问题描述】:
是否有任何已经构建并准备好使用的 C++ 算法,类似于 CGAL 的 offset_2 函数,但不是计算圆和多边形的 Minkowski 和,而是计算圆和折线的 Minkowski 和(即折线的缓冲区)?
在应用程序中,这是我想做的:
- 输入具有 n 个顶点的折线:([x_0,y_0],[x_1,y_1],...,[x_n-1,y_n-1])
- 找到这条折线的确切缓冲区(输出是一个可能有洞的多边形)
- 提取每个单独的圆锥弧以测试与我拥有的其他线的交点。
- 显示此缓冲折线
谢谢
编辑:可能的解决方案
我可以在每个顶点处生成一个半径为 r 的圆,并在每个线段上生成一个宽度为 2r 的矩形,然后取它们的并集吗?
如果我正确理解了 CGAL 文档,我可以得到一个精确的解决方案(即由圆锥弧组成的东西),对吗?如果是这样,我们将不胜感激。
【问题讨论】:
-
我不知道这个包,但是将折线 ABCDE 变成平面多边形 ABCDEDCB 有帮助吗?
-
@MarcGlisse 是否允许这种类型的多边形?我对 CGAL 还很陌生,但这是否也会导致计算效率低下?
-
@MarcGlisse 我按照你的建议做了,但它返回以下错误:
CGAL ERROR: precondition violation!,然后是Expr: pgn.is.simple()。所以看来我不能使用平面多边形,因为它们并不简单。 -
@MarcGlisse 我发布了这个问题的解决方案,我们将不胜感激第二个意见。感谢您所做的一切,您似乎总是对我的问题发表评论并提供最大的帮助!
标签: c++ computational-geometry cgal