建立受约束的Alpha多边形

时间:2019-07-03 14:26:57

标签: computational-geometry concave-hull

我有一个非常具体的任务。
我需要计算一组点的alpha shape。 (您可以使用已经实施的算法there嬉戏)

要点是,我具有预定义的点子集(我们将其称为详细信息),并且我不希望更改其结构。例如,假设这些多边形为详细信息:

enter image description here

然后,根据alpha半径,可以使用以下船体:

enter image description here

enter image description here

以下不是:

enter image description here

总之,我希望指定的点子集的结构在减小半径的过程中保持不变。

所以,你怎么看:

  1. 我可以使用任何已经实现的算法还是应该找出一些特定的算法?
  2. 是否在任何地方都实现了带有开放源代码的Alpha-Shape算法示例? (字母形状,而不是凹面船体。减小半径时必须将轮廓分成几部分)

1 个答案:

答案 0 :(得分:0)

好吧,最后我用约束的Delaunay三角剖分解决了这个问题。

Yves Daoust在对问题的评论中表示赞同)的想法不仅是在构建Alpha形状时使用Delaunay三角剖分,而且还使用了约束 Delaunay三角剖分。

算法:简而言之,我:

  1. 获取已升级多边形的凸包
  2. 计算其约束三角剖分。 (约束线段是多边形的边)

在这一步中,我将Triangle .NET库用于C#。我想,每种流行的语言都有替代品。

  1. 构建alpha形状:丢弃所有边长超过预定义的 alpha
  2. 的所有三角形

我的奋斗结果

  1. Alpha = 1000,alpha形状只是一个凸包

enter image description here

  1. Alpha = 400

enter image description here

  1. Alpha =30。只有非常小的凹面才被平滑

enter image description here

如有需要,请随时写信给我,以获得更深入的解释。