【问题标题】:Combining lots of small polygons to one (some) big poly(s)将许多小多边形组合成一个(一些)大多边形
【发布时间】:2016-10-27 05:14:33
【问题描述】:

我正在寻找将许多相对较小的二维多边形合并到一个或一些大多边形的算法。如果两个小多边形接触或重叠,则应将它们合并为一个多边形。

我的大目标是充分减少描述对撞机所需的点/线数量。生成的对撞机可以包含一些多边形,顺便说一句。

您能提出一个算法或库来做到这一点吗? (最后我将在 C# 中为 Unity3d 实现解决方案)。

我希望以编程方式创建我的大对撞机,并且我希望它的边界准确地重复小多边形的外部边界。这就是为什么这个问题不是“如何在 Unity 5 中为对象添加物理”的重复问题。

【问题讨论】:

  • 这是一个非常重要的过程。除了“网格简化”之外,您还可以查找诸如“顶点聚类”或“增量抽取”之类的搜索词。 CGAL 库可能会实现一些功能,但将其提取到 C# 中并非易事。
  • 这里有这个常见问题的绝佳答案:它是网站上最好的答案之一。 stackoverflow.com/a/37810695/294884请投票
  • 不,它没有。请阅读我在问题消息中的补充。
  • “我希望以编程方式创建我的大对撞机,并且我希望它的边界能够准确地重复小多边形的外边界”只有在外部是正方形或三角形时才能这样做。我不明白你为什么要这样做?有很多小三角形没有错,确实更有效
  • 因为一些算法,例如阴影/光计算算法,使用这些碰撞器。实际上计算 4k 顶点或仅计算 400 顶点之间存在很大差异。

标签: algorithm math unity3d graphics 2d


【解决方案1】:

要构建二维多边形的并集,您可以使用Clipper library

下载包包含库的完整源代码(用Delphi、C++和C#编写),`

【讨论】:

  • 看起来正是我所需要的。 @JoeBlow 我正在寻找算法,而不是强制性的 C# 或 Unity3d 包实现。
猜你喜欢
  • 2021-06-18
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多