我目前正在尝试实现半边折叠以执行增量重新网格化。我正在处理流形网格。考虑以下简单网格:

目标是将 a 折叠成 b。

然而,在这种情况下,这会导致非流形网格

我想阻止这一点。我的问题是:
我怎样才能提前做到这一点,即在崩溃之前执行检查崩溃操作是否安全?
我已经尝试过 Hoppe 的标准(链接条件),但看起来两者都已满足。此外,a 和 b 的一环的唯一交点是 c,因此只有一个点,因为它是边界边缘。
另外一般来说,我还需要执行哪些其他检查以避免非法倒塌?
现在,我有以下标准:
小智 5
您可能想看看这篇论文:
塔马尔·戴伊、赫伯特·埃德斯布伦纳、苏曼塔·古哈和德米特里·涅哈耶夫。保持边缘收缩的拓扑。
我不确定您指的是哪一篇 Hoppe 的论文(渐进网格?),但 Tamal Dey 的链接条件与您所说的不同。直观上,边 ab 是可折叠的,如果
one-ring(a) intersected with one-ring(b) == one-ring(ab).
Run Code Online (Sandbox Code Playgroud)
对于边 ab,一环是共享 ab 的面的其他顶点的集合。同样在 Tamal Dey 的链接条件中,您需要考虑嵌入空间的维度。(即,2d 和 3d 中的边的链接条件不同)。许多其他工作使用此链接条件来折叠边缘,而不会产生拓扑错误。
令人困惑的是,从你的例子来看,我无法真正判断它是 3d 还是 2d 中的带边界网格,或者它有多“平面”。这些因素决定了生成的网格是否具有“折叠”,例如,三角形 bcd 在 2d 中被认为是折叠的,但如果网格不是平面的,则在 3d 中可能很好。