【问题标题】:How to triangulate a polygon without random inner points?如何对没有随机内点的多边形进行三角剖分?
【发布时间】:2011-06-11 08:42:47
【问题描述】:

我想创建一个预定义多边形的三角形。我的要求是我不想在这个多边形内创建随机点来使用 Delaunay 三角剖分算法对其进行处理。
多边形可以是凹的也可以是凸的。

我完全可以使用 Delaunay 三角测量,但我不想在多边形内创建随机点。如果我能在这个多边形内创建尽可能少的点会更好。
我想尽量减少使用的三角形的数量。

我怎样才能确定这一点?

评论:这更像是一种与语言无关的东西,我想知道如何自己实现它。

【问题讨论】:

  • 那么您想尽量减少所需的三角形数量吗?
  • 是的,完全正确!我将添加此信息。
  • 我认为它不是凸的,对凸多边形进行三角剖分听起来太简单了。
  • 它可能会有所不同:多边形可能是凹的或凸的。

标签: algorithm language-agnostic geometry computational-geometry


【解决方案1】:

您可以使用Ear Clipping or monotone polygons。两种算法都不会引入加分。

(如果选择形成单调多边形,单调多边形是凸的,可以直接折成三角扇形。)

【讨论】:

    【解决方案2】:

    如果多边形是凸面,则很容易只使用边界并使用沿边界的点进行三角剖分。如果它是非凸的,我会做一个凸边界,并将插入的点标记为已插入。然后,在完成其他所有操作后,删除插入的点。

    如果您得到长而细的三角形,您还可以使用网格细化算法来细化网格。使用 Delaunay,您可以通过某种定义检查三角形是否“薄”,如果它“薄”,则在该三角形的外心插入一个点。因此,您所要做的就是使用 Delaunay 理论。

    【讨论】:

    • 我认为对于凹多边形,它会改变外形,不是吗?
    • 我不这么认为,因为您将其三角剖分为凸面,然后删除原始边界之外的点。当然,您也必须使用原始边界上的所有点,然后当您删除边界外的点时,原始边界将成为新边界,具有相同的外形。至少我不认为它会改变外形。
    【解决方案3】:

    我发现了非常有用的库Poly2Tri。这个库的 Java 分支正是我所需要的。

    我只需要正确使用它。它不会向多边形添加任何点。

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 2020-04-21
      • 2011-07-15
      • 2016-09-28
      • 2012-09-06
      • 2016-09-27
      • 1970-01-01
      • 2014-07-12
      • 2020-11-21
      相关资源
      最近更新 更多