半边数据结构
概述
半边结构
上图就是一个半边结构表示的网格实例。半边数据结构的基本元素有顶点,面和半边(有向边)。
- 每一个顶点存储一个外向半边(即该点为半边的起点);
- 每一个面存储一个边界半边;
- 每一个半边包含以下指针(句柄):
1, 终点;
2, 属于的面;
3, 所在面的下一条半边(逆时针方向);
4, 相反的半边;
5, (可选)所在面的上一条半边。
优点:
- It is easy to mix faces of arbitrary vertex count in one mesh;
- 有了点,边,面的显示表示,可以很容易存储关于点、边、面的用户自定义或者OpenMesh预定义的数据在里面,OpenMesh在设计上提供了这样的便利,比如我们想在每一个点上加一个权重,只要增加一个权重成员变量即可;
- 很容易通过循环器得到某一个顶点的1-ring领域,而不需要类似于基于面的结构中的分支判断语句。
S. Campagna, L. Kobbelt, H.-P. Seidel, Directed Edges - A Scalable Representation For Triangle Meshes, ACM Journal of Graphics Tools 3 (4), 1998.
Lutz Kettner, Using Generic Programming for Designing a Data Structure for Polyhedral Surfaces, in Proc. 14th Annual ACM Symp. on Computational Geometry, 1998.