首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据共享顶点c#将两个三角合并成一个四角

根据共享顶点c#将两个三角合并成一个四角
EN

Stack Overflow用户
提问于 2014-05-11 02:17:59
回答 1查看 941关注 0票数 0

在2D上下文中,假设网格没有任何漏洞。

如何从三角形形成四边形给定的顶点信息?例如,以四个三角形为例。

代码语言:javascript
运行
复制
1       2       3
+-------+-------+
|\      |\      |
|  \    |  \    |
|    \  |    \  |
|      \|      \|
+-------+-------+
4       5       6

三角形是(假定顺时针缠绕顺序)

代码语言:javascript
运行
复制
A=(1, 5, 4) B=(1, 2, 5) C=(2, 6, 5) D=(2, 3, 6)

边是

代码语言:javascript
运行
复制
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)

共有边的三角形是:

  • A和B正好共享1条边1-5 (因为它与5-1相同)
  • B和C份额2-5
  • C和D份额2-6

根据这些信息,可以将其量化为

  • 2四进制(1, 2, 5, 4)(2, 3, 6, 5)

然而,我不知道如何确定所有的四边形,并选择一个留下最少数目的退化三角形。

我有所有的网格三角形信息(三角形的数量,它们的顶点,如前面所示),你知道任何库或代码片段,我可以开始吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-14 00:04:45

我在这里发布了一个类似问题的答案:https://gamedev.stackexchange.com/questions/74807/convert-triangles-to-quads-of-a-mesh/74987#74987

你也许可以毫不费力地强迫这一点,才能得到完美的答案。在一个真实的网格中,在大多数情况下,你实际上会有“补丁”,这些补丁可能会被转化为四边形,但是你不会有一个由一个平面组成的、有大量三角形的整个表面,所以我个人不会花费大量的时间来优化这个问题。如果你有一个平面完全由三角形组成,我认为你最坏的情况是,在每个四边形之间有一个三角形。因为每个四边形是由两个三角形组成的,所以你只会看到大约30%的潜在最坏情况。

因为将它们转换成四元是一个相对较快的过程,所以我不会花费大量的时间来优化它,我只会创建一些东西,布鲁斯将强制每一个可能的迭代,并选择最好的一个。当你比你目前最好的情况更糟的时候,你可以立即终止任何特定的检查。如果你把你的出发点随机化,你就不用检查所有的东西了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23588263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档