在2D上下文中,假设网格没有任何漏洞。
如何从三角形形成四边形给定的顶点信息?例如,以四个三角形为例。
1 2 3
+-------+-------+
|\ |\ |
| \ | \ |
| \ | \ |
| \| \|
+-------+-------+
4 5 6
三角形是(假定顺时针缠绕顺序)
A=(1, 5, 4) B=(1, 2, 5) C=(2, 6, 5) D=(2, 3, 6)
边是
A=(1-5, 5-4, 4-1) B=(1-2, 2-5, 5-1) C=(2-6, 6-5, 5-2) D=(2-3, 3-6, 6-2)
共有边的三角形是:
根据这些信息,可以将其量化为
(1, 2, 5, 4)
和(2, 3, 6, 5)
然而,我不知道如何确定所有的四边形,并选择一个留下最少数目的退化三角形。
我有所有的网格三角形信息(三角形的数量,它们的顶点,如前面所示),你知道任何库或代码片段,我可以开始吗?
发布于 2014-05-14 00:04:45
我在这里发布了一个类似问题的答案:https://gamedev.stackexchange.com/questions/74807/convert-triangles-to-quads-of-a-mesh/74987#74987
你也许可以毫不费力地强迫这一点,才能得到完美的答案。在一个真实的网格中,在大多数情况下,你实际上会有“补丁”,这些补丁可能会被转化为四边形,但是你不会有一个由一个平面组成的、有大量三角形的整个表面,所以我个人不会花费大量的时间来优化这个问题。如果你有一个平面完全由三角形组成,我认为你最坏的情况是,在每个四边形之间有一个三角形。因为每个四边形是由两个三角形组成的,所以你只会看到大约30%的潜在最坏情况。
因为将它们转换成四元是一个相对较快的过程,所以我不会花费大量的时间来优化它,我只会创建一些东西,布鲁斯将强制每一个可能的迭代,并选择最好的一个。当你比你目前最好的情况更糟的时候,你可以立即终止任何特定的检查。如果你把你的出发点随机化,你就不用检查所有的东西了。
https://stackoverflow.com/questions/23588263
复制相似问题