【问题标题】:how to find all triangles for surface knowing vertices如何找到曲面知道顶点的所有三角形
【发布时间】:2018-04-08 23:40:44
【问题描述】:

我需要找到构成我的曲面的所有顶点,但我只知道顶点(将它们保留为数组)和边。我在XY坐标系中做。我在 Unity3D 项目中需要它(所以伪代码或 C# 代码会很有帮助),但任何数学想法都值得赞赏。

例如,我制作了一些图片。 如果在我的示例中没有凸角,那真的很容易 - 我选择任何顶点(例如 0)并在循环中取两个下一个顶点。它给了我三角形 0-1-2、0-2-3 和 0-3-4。

如果我有一个凸角,这也很容易。我不知道如何找到哪个顶点是凸的(有什么想法吗?),但它似乎并不复杂。然后我带他做和上面一样的算法。

不幸的是,我的想法不再适用于更复杂的形状,例如(我的项目中总是有一个形状,我只是画更多的形状来展示更复杂的示例):

如果我有这样的形状并尝试使用上述方法,任何三角形总是不符合我的形状。

我认为我可以使用任何数学。我的顶点在 XY 坐标上,所以我可以计算一些东西。如果需要,我也可以制作更多顶点,因此我可以:

我试图准确地描述我的问题。我希望我的英语不太稳定。

如果您有任何想法 - 数学想法或伪代码想法如何为我的顶点制作表面,请写出来。如果您有任何单一的建议,而不是具体的想法 - 也写。我正在寻找灵感、想法或任何东西。

【问题讨论】:

  • 我认为混合凸凹?
  • 我的意思是我认为你在解释中混淆了这些术语。正如您在上面描述的那样,凸的不应该是真正的问题,而是将它们称为凹的。
  • google 三角测量 ...就像剪耳 ...
  • 这是 80 年代和 90 年代有限元自动网格划分的一个活跃研究领域。搜索四叉树、自动网格划分等,找到最新的。

标签: algorithm math unity3d mesh surface


【解决方案1】:

我会做两个假设:

  • 您没有任何特定的三角测量优于另一种的标准。
  • 您想要一些概念上简单的东西。

选择任何顶点。连接到任何其他顶点,使形成的线完全在多边形内。这意味着

  • 另一个顶点与原来的不相邻
  • 连接线段未穿过多边形的一侧。

可能没有这样的顶点。如果是这样,则移动到下一个顶点,迭代直到找到可以连接的对。 至少有一对这样的对。

当您绘制新线段时,您还将多边形分成两个多边形,每个多边形的顶点都比原始多边形少。

在每个多边形上重复出现。您在每个线程上的停止情况(基本情况)是您不划分三角形。

【讨论】:

    猜你喜欢
    • 2013-09-22
    • 2011-10-09
    • 2014-07-04
    • 2015-11-14
    • 2010-12-03
    • 2017-08-03
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    相关资源
    最近更新 更多