半边数据结构网格 - OpenMesh C++ - 边中的边界半边

Half Edge data structure mesh - OpenMesh C++ - Boundary halfedges in edge

本文关键字:边界 C++ 数据结构 OpenMesh 网格      更新时间:2023-10-16

在网格 - 半边数据结构中,有边和半边

在 OpenMesh 库中不是必需的,edge 通常有一个给出前半部分边缘的方法:

Halfedge h = mesh.halfedge(e, 0);  // e - is an edge in mesh; 0 - id of halfedge in edge

对于相反的边缘,我使用:

Halfedge h = mesh.halfedge(e, 1);

这个边缘函数在库中看起来像这样:

/// returns the c i'th halfedge of edge c e. c i has to be 0 or 1.
Halfedge halfedge(Edge e, unsigned int i) const
{
    assert(i<=1);
    return Halfedge((e.idx() << 1) + i);
}
  • 如果一对中只有一个半边存在,这个函数会返回前半边吗?

  • 伪代码的最后一行是否对边界边有效太?

  • 有多少条半边边界边?

  • 半边数据结构中的边是否在边界?

我可以部分回答你的问题:

就我在 OpenMesh 数据结构中探索的主题而言,所有边都被分成 2 条半边,包括网格边界上的边。事实上,从字面上讲,边并不存在,只有成对的半边存在。

因此,我只使用 OpenMesh 库,我不知道使用半边的其他库和数据结构的行为。

希望这有帮助。