我需要找到构成表面的所有顶点,但我只知道顶点(将它们保持为数组)和边缘。我是在XY坐标系中做的。我需要它用于Unity3D项目(所以伪代码或C#代码将非常有用),但任何数学思想也都很受欢迎。
我做了一些照片。 如果我在我的例子中没有凸角,那真的很容易 - 我选择任何顶点(例如0)并在循环中取两个下一个顶点。它给了我三角形0-1-2,0-2-3和0-3-4。
如果我有一个凸角,那也很容易。我不知道如何找到哪个顶点是凸的(任何想法?)但它看起来并不复杂。然后我带他去做与上面相同的算法。
不幸的是,我的想法停止了更复杂形状的工作,例如(我的项目中总是有一个形状,我只是绘制了更多的形状以显示更复杂的例子):
如果我有这样的形状并尝试使用上述方法,那么任何三角形都不符合我的形状。
我认为我可以使用任何数学。我的顶点在XY坐标上,所以我可以计算一些东西。如果我需要的话,我可以制作更多的顶点,所以我可以:
我试图尽可能地描述我的问题。我希望我的英语能够理解。
如果你有任何想法 - 数学思想或伪代码想法如何为我的顶点制作表面 - 请写。如果你有任何单一的建议,不是具体的想法 - 也写。我正在寻找灵感,想法,任何事情。
答案 0 :(得分:0)
我做两个假设:
选择任何顶点。连接到任何其他顶点,使得形成的线完全在多边形内。这意味着
可能没有这样的顶点。如果是这样,那么移动到下一个顶点,迭代直到找到可以连接的对。 将至少有一对这样的人。
绘制新段时,您还将多边形划分为两个多边形,每个多边形的顶点都比原始多。
重复这些多边形。你在每个帖子上的停止案例(基本案例)是你不要划分三角形。