几何网格技术已经发展了多年,也出现了各种表示多边形网格的数据结构和表示模型,主要分为基于面和基于边的数据结构,基于面的网格数据结构主要包括点和面的几何信息,不能提供获取点或面的拓扑信息,数据结构简单,易于读取,主要用于形体显示、渲染和数据格式交换。基于边的数据结构是将几何元素相邻的拓扑关系保存在边或者半边中,能够更好的表达网格几何元素之间的邻接关系,是目前网格几何表示的主要数据结构,比较著名的就是半边数据结构。
在几何构造中,三角网格可被三个表格来表示点表V,(表示顶点的集合),边表E(两个顶点连接的边的几何),面表F(由3个顶点连接的三角面的集合)。一个封闭和相互连接的流行三角网格的点、边和面的个数存在一个欧拉关系V-E+F=2,其中V、E、F分别代表顶点、边、面的个数,根据这个关系,可得出一下统计数据。
1)三角面的个数约等于顶点个数的2倍。
2)边的条数约等于顶点个数的3倍。
3)平均顶点的键数(入射边数)是6倍。
网格几何表示模型要求
网格几何表示的主要目的是为了后续对网格模型开展的各种应用,比如网格简化、网格分割、网格填补、网格平滑等操作,这些应用对网格模型提出至少3个功能要求。
1)网格求值。能够完成对网格的各种几何求值计算,相交、法向和曲率计算。
2)网格查询。包括空间几何查询和拓扑查询,拓扑查询就是通过网格几何元素的连接关系,能够遍历网格几何元素的面、边、点。
3)网格修改。网格边形、网格简化、网格细化、网格填补等。
一个形体的网格模型是由数量庞大的离散三角面组成,占用很大的内存资源。因此评价一个模型架构除了上述提道德基本要求外还有4格重要的指标
1)构建模型的时间
2)回答特点查询的时间
3)执行特定修改操作的时间
1)内存消耗和数据冗余。
半边表示方式是,<所属的面,边的顺序编号>。
基于以上思路,做一个比较完整的验算:
顶点表 | 三角面表 | 半边表 |
v1,<f1,1> 0 | 1,4,5,-1,21,3, 1 | <f1,1>,<f1,2>,<f13> 0—2 |
V2<f2,3> 5 | 1,5,2,2,6,-1,2 | <f2,1>,<f2,2>,<f23> 3—5 |
V3<f3,3> 8 | 2,5,3,4,9,-1,3 | <f3,1>,<f3,2>,<f33> 6–8 |
V4<f1,2> 1 | 3,5,6,7,12,-1,4 | <f4,1>,<f4,2>,<f43> 9–11 |
V5<f3,2> 7 | 6,5,9,10,16,-1,5 | <f5,1>,<f5,2>,<f53> 12–14 |
V6<f4,3> 11 | 8,9,5,-1,13,19,6 | <f6,1>,<f6,2>,<f63> 15–17 |
V7<f7,1> 18 | 7,8,5,-1,17,23,7 | <f7,1>,<f7,2>,<f73> 18–20 |
V8<f7,2> 19 | 5,4,7,1,-1,20 | <f8,1>,<f8,2>,<f83> 21–23 |
其实半边数据结构的源码是哈佛图形档案网格实验室开发的,是基于指针的网格拓扑结构,是基于C++编写的代码,目前采用该结构的开源软件有OpenMesh等,但是很多开发语言是没有指针的,比如MatLab、LabVIEW等,但是可以借助半边数据结构的开发原理及思路,以半边作为纽带,实现点、边、面的相互关联。我也是读了很多的国外文章,在充分理解基础上研发出基于LabVIEW数组结构的网格半边数据结构操做API,会在近期公布出来,感兴趣的朋友可以联系我。
LabVIEW具体实现:
该数据结构包括顶点表(坐标+该点的出射边)、半边表(该边所属的面+在该面中的序号)、面表(三个顶点的的索引值+三条半边的反向边);该API使用DEMO,添加三角形到数据结构,并读出显示,如下图所示:
该API包括半边数据结构的所有操作函数并开发基于与该API点云重建、网格填补、网格平滑、网格细化、网格简化等操作函数。
参考文献:
[1]Compact Array-Based Mesh Data Structures. Tyler J. Alumbaugh and Xiangmin Jiao Center for Simulation of Advanced Rockets Computational Science and Engineering University of Illinois at Urbana-Champaig
[2]Explicit array-based compact data structures fortriangulations.Luca Castelli Aleardi, Olivier Devillers
[3]AHF: Array-Based Half-Facet Data Structure for Mixed-Dimensional and Non-manifold Meshes Vladimir Dyedov1,, Navamita Ray1, Daniel Einstein2, Xiangmin Jiao1,, and Timothy J. Tautges3
1 Dept. of Applied Math. & Statistics, Stony Brook University, Stony Brook, NY 11744
jiao@ams.sunysb.edu 2 Biological Sciences Division, Pacific Northwest National Laboratory,
Richland, WA 99352 3 Math. & Computer Science Division, Argonne National Laboratory, Argonne, IL 60439
[4] 采用半边编码的三角网格拓扑结构 计算机辅助设计与图像学报。
============================
有任何问题欢迎交流:
声明:来自LabVIEW高级编程,仅代表创作者观点。链接:https://eyangzhen.com/3160.html