半边数据结构

半边数据结构是一种针对多边形网格的高效表示方法,尤其适用于临近查询操作。它以常数时间完成边、面、顶点的邻接信息查询,并保持固定且紧凑的数据大小。结构包括顶点、半边和面片,每个对象有指向其他对象的指针,确保快速访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、为什么需要半边结构

多边形网格(polygon mesh)的一个常用方式就是使用共享的顶点列表和面的列表(例如OBJ模型文件,如下图),这样的表示方法在许多情况下都非常方便和高效,但是在某些特定的领域(临近查询),反而会效率比较低。
在这里插入图片描述

在一个多边形网格上其他类型的的临近查询包括:

  • 哪条边用到了这个点
  • 哪条边用到这个点
  • 哪个面临近这条边
  • 哪条边临近这个面
  • 哪个面临近这个面

半边(half-edge)数据结构是一种略微复杂的边表示方法,并且在上面提到的所有操作都可以在常数时间完成。更优秀的是,即使包含了面、顶点和边的邻接信息,数据结构的大小是固定的(没有使用动态数组)且紧凑的。

二、详细数据结构

在给出半边的具体结构之前,先列出若干基本假设:

  • 三维模型包含顶点、边、面片三部分结构,在空间中分别是0维、1维和2维的。面即为物体表面的某一多边形区域,边是相邻两个面的交线段或一个面的边缘,顶点为相邻边的交点。
  • 每条边只与最多两个面相邻
  • 每个面片均有自己的朝向,以区分内侧和外侧
  • 两个相邻的面片朝向相同

半边数据结构中包含了三种对象:顶点、半边和面片。每个对象均为固定长度,并包含了指向其他对象的指针。详细说明见下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值