半边数据结构

文章介绍了半边数据结构用于表示空间多边形网格的优势,这种结构通过存储顶点、半边和面的关系,优化了点、线、面的查询和操作效率。每个半边包含指向顶点、相对半边、对应面和下一个半边的指针,从而可以直接访问邻接信息,简化了如删除顶点或查找邻接元素等操作。
摘要由CSDN通过智能技术生成

       表示一个空间多边形网格的常用方法是使用一个顶点列表和一个面列表,在面结构中存储属于该面的顶点的指针。这种方式是非常便捷高效的,但是它没有存储顶点、边和面之间的从属、包含及邻接关系。如当我们想要删除某个点,或者比如想要找到某个点的1-邻域点,这时我们往往要对点列表和面列表整体进行遍历搜索,这样开销是很大的,会直接影响到整个系统的效率。

    为了提高点线面的查询或增删改操作的效率,半边数据结构中增加了“半边”的概念,为了方便表达拓扑关系,它将一条边表示成拓扑意义上方向相反的两条“半边”,所以称为半边数据结构。

下图为用半边数据结构表示的三角形网格的一部分。

       半边结构由三个对象组成:顶点、半边、面。从上图中,我们可以看到半边(用橙黄色代表)会围绕着一个面的边缘形成一个循环列表,其环绕方向我们可以预先实现给定,这个面为半边所对应的面。每个半边存储一个指向它离开的顶点的指针、一个指向它相对的半边的指针、一个指向它对应的面的指针以及一个指向它的下一个半边的指针,类似如下:

struct HE_edge

    {
        HE_vert* vert;   // vertex at the end of the half-edge

        HE

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值