【问题标题】:How can I make triangles mesh into a convex polygons?如何使三角形网格成凸多边形?
【发布时间】:2013-01-15 06:04:06
【问题描述】:

我有一个三角形网格。三角形有不同的“颜色”。像这样:

我需要得到的是优化的网格,其中过多的三角形被合并成一个凸多边形。像这样:

有人可以给我一个关于一些算法的链接来完成这个吗?提前致谢!

附:我正在使用 C#。

【问题讨论】:

  • 我尝试合并两个相邻的三角形,然后向多边形添加更多三角形,每次检查,生成的多边形是否凸?此方法有效,但结果非常不理想。最好我需要一些算法,它可以给我最优化的结果。像网格优化算法一样。但如果您能提供任何帮助,我将不胜感激。
  • 生成的形状是否只使用原始网格中存在的边很重要,还是可以根据需要添加边?

标签: c# geometry computational-geometry


【解决方案1】:

Hertel-Mehlhorn 算法是执行此操作的标准方法;可以概括为

  1. 从多边形 P 的三角剖分开始;
  2. 删除不重要的对角线
  3. 重复。

(来自http://www.philvaz.com/compgeom/

这在多项式时间内有效,并且具有最优性的界限,尽管它不一定是最优的。

在您的情况下,您可以修改第 2 步,不考虑不同颜色的三角形之间的对角线。

一种通常会产生“更好看”的片段的启发式方法是在每一步合并最长的对角线。

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我没有任何算法链接来解决这个问题,但我认为比一次将凸多边形构建一个三角形更好的方法可能是首先将三角形合并成最大的简单多边形(即:它们可以是凹的,但没有孔)你可以,然后将这些大多边形分解成它们的凸组成部分。

    由于内角大于 180 度,您知道这些分割将发生在哪些顶点,然后您只需选择要沿其分割的入射边。选择最佳边缘进行分割的精确方法不是一个简单的问题,但合理的启发式方法可能是最大化分割后

    【讨论】:

      猜你喜欢
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 2021-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多