半边结构实践总结

做者: 姚彧
版本历史:算法

版本 日期 说明
0.1 2019-06-03 建立文档

版权声明:本文为做者原创文章,博客地址:https://www.cnblogs.com/yaoyu126 未经做者容许不得转载。数据结构

1. 半边定义

为了方便表达流形表面,经过把一条边拆分红相对两条半边,使咱们查找边、顶点、面很是便捷。spa

2. 半边的基本性质

2.1 一条边

对于一条边来讲,对边正好构成了环。code

\(e_0=\left\{\begin{aligned} e_1.pair \\ e_1.next \\ e_1.prev \\ \end{aligned}\right.\)
\(e_1=\left\{\begin{aligned} e_0.pair \\ e_0.next \\ e_0.prev \\ \end{aligned}\right.\)blog

2.2 在顶点插入边

\(e_n\)插入到\(e_0\)以前,步骤以下:文档

  1. 找到前边\(e_0.prev\);
  2. \(e_0.prev.next = e_n.next\)
  3. \(e_n.next = e_0\)

3. 基本数据结构

在这里,咱们约定按逆时针方向设置半边。get

# 顶点
class HE_vert:
    edge        # 顶点指向的半边

# 面
class HE_face:
    edge        # 面右侧的半边

# 半边
class HE_edge:
    vert        # 半边指向的顶点
    pair        # 对边(半边成对)
    next        # 下一条半边
    face        # 半边左侧的面

4. 构网问题

4.1 在三维文件中,面与面之间并不必定连续

面与面的不连续,形成了构网过程时,顶点的遍历算法失效。这是由于构网过程当中,形成了它不是流形表面,这时用字典记录点对对应的半边来解决已有边查找问题。在格网构建完成后,由于是流形面,顶点的遍历算法又有效了。博客

相关文章
相关标签/搜索