如何找到表面知道顶点的所有三角形

时间:2017-10-27 11:17:30

标签: algorithm math unity3d mesh surface

我需要找到构成表面的所有顶点,但我只知道顶点(将它们保持为数组)和边缘。我是在XY坐标系中做的。我需要它用于Unity3D项目(所以伪代码或C#代码将非常有用),但任何数学思想也都很受欢迎。

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

如果我有一个凸角,那也很容易。我不知道如何找到哪个顶点是凸的(任何想法?)但它看起来并不复杂。然后我带他去做与上面相同的算法。 enter image description here

不幸的是,我的想法停止了更复杂形状的工作,例如(我的项目中总是有一个形状,我只是绘制了更多的形状以显示更​​复杂的例子): enter image description here

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

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

我试图尽可能地描述我的问题。我希望我的英语能够理解。

如果你有任何想法 - 数学思想或伪代码想法如何为我的顶点制作表面 - 请写。如果你有任何单一的建议,不是具体的想法 - 也写。我正在寻找灵感,想法,任何事情。

1 个答案:

答案 0 :(得分:0)

我做两个假设:

  • 你没有任何特定的三角测量标准比另一个更好。
  • 你想要一些概念上容易的东西。

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

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

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

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

重复这些多边形。你在每个帖子上的停止案例(基本案例)是你不要划分三角形。