几何建模算法的效率和内存消耗在很大程度上取决于基础曲面网格数据结构.

选择网格数据结构需要考虑拓扑和算法方面的考虑:

拓扑要求。数据结构需要表示哪种网格? 我们可以依靠2-manifold网格,还是需要表示复杂的边和奇异的顶点?我们可以将自己限制为纯三角形网格,还是需要表示任意多边形网格?

算法要求。哪种算法将在数据结构上操作? 我们是只想渲染网格,还是需要有效地访问顶点、边和面的局部邻域? 网格是静态的,还是它的几何形状和/或连通性会随着时间的推移而改变? 我们是否需要将附加数据与网格的顶点、边和面相关联? 我们是否有特殊要求内存消耗(即数据集是否海量)?

评估数据结构需要测量各种标准,如(a)在预处理期间构建数据结构的时间,(b)回应一个具体查询的时间,(c) 执行特定操作的时间;(d)内存消耗和冗余

Face-Based Data Structures

表示表面网格的最简单方法是存储一组单独的多边形面,这些面由其顶点位置表示(所谓的面集)。 对于三角形网格的简单情况,这需要在每个面存储三个顶点位置(请参见图2.1(左))。 使用32位单精度数字表示顶点坐标,则每个三角形需要3·3·4 = 36个字节。 由于基于Euler的公式(公式(1.5)),面F的数量大约是顶点V的两倍,因此该数据结构平均消耗72个字节/顶点。 由于它不代表网格连接,因此通常称为三角形汤或多边形汤。

然而,如果没有额外的连接信息,这种数据结构需要昂贵的搜索来恢复顶点的局部邻接信息,因此对于大多数人来说不够有效 算法。 我们现在回顾了为快速遍历曲面网格而设计的几种数据结构。

包含连接性信息的三角形网格的基于面的标准数据结构包括:为每个面存储对其三个顶点的引用以及对其相邻三角形的引用。 每个顶点除了其3D位置之外,还存储了对其入射面之一的引用(请参见图2.2)。 基于此连通性信息,人们可以围绕顶点循环以枚举其单环邻域,并执行上面列出的所有其他操作。

Edge-Based Data Structures

一般多边形网格的数据结构在逻辑上是基于边的,因为连通性主要涉及网格边。

winged-edge结构如图2.3所示.. 每个边缘存储对其端点顶点、两个入射面以及左、右面内的下一个和前一个边的引用。 顶点和面存储对其入射边缘之一的引用。 总共导致内存消耗16字节/顶点 +32字节/边 +4字节/面=120字节/顶点由于方程中的欧拉公式,F≈2V和E≈3V

尽管基于边的数据结构可以表示任意多边形网格,但遍历一个环仍需要区分大小写(中心顶点是边的第一还是第二顶点?)。 最终,通过halfedge数据结构解决了此问题,如下一节所述。

Halfedge-Based Data Structure

半边数据结构[Mantyla88,Kettner99]通过将每个(非定向)边分割成两个定向半边来避免基于边的数据结构的情况差异,如图2.4所示。 该数据结构能够表示任意多边形网格,这些网格是可定向(组合)2-maniflod的子集(没有复杂的边和顶点,参见图1.6)

在半边数据结构中,每个面周围和沿每个边界以逆时针方向一致地定向半边。每个边指定一个唯一的角(一个面中的非共享顶点),因此纹理坐标或法线等属性可以存储在每个角上.

中心顶点的单环邻居可以通过从中心的出站半边开始(左)进行枚举,然后通过步进到相对的半边(中心)和下一个半边(右)重复顺时针旋转半边直到再次达到第一个半边。

此外,每个面都存储对其半边之一的引用,每个顶点存储一个输出半边。 由于半边数H的数量大约是顶点数V的六倍,因此总内存消耗为16字节/顶点+ 20字节/半边距+ 4字节/面= 144字节/顶点。不明确存储前一个和相反的半边会使内存成本降低到96个字节/顶点

绝对不能错过!计算机视觉Polygon Mesh Processing读书笔记——3相关推荐

  1. 绝对不能错过!计算机视觉Polygon Mesh Processing读书笔记——4微分几何中的曲线

    流形 3D模型必须为流形.通俗地说,如果一个网格模型中存在多个(3个或以上)面共一条边,那么它就是非流形的(non-manifold),因为这个局部区域由于自相交而无法摊开展平为一个平面了.请看如图所 ...

  2. 全球首发!计算机视觉Polygon Mesh Processing读书笔记6——微分几何中的Metric Properties

    令连续表面的参数形式为 其中x,y和z是u和v中的可微函数,Ω是参数域. 标量(u,v)是参数空间中的坐标.与曲线情况类似,表面的度量由函数x的一阶导数确定. 如图3.3所示,这两个偏导数.将向量w从 ...

  3. 全球首发!计算机视觉Polygon Mesh Processing读书笔记——5微分几何中的弧长

    Arc Length 可以将在区间[c,d]⊆[a,b]上定义的任何曲线段的长度l(c,d)计算为切向量的积分,即l(c,d)= . 因此,切向量对曲线的度量进行编码. 此弧长参数设置独立于曲线的特定 ...

  4. 【笔记】Polygon mesh processing 读书笔记(1)

    参考书籍:Polygon mesh processing,2010 大约分8篇,这是第一篇 0. 前言 3D 获取技术 计算机断层扫描(computer tomography) 核磁共振成像(MR,m ...

  5. 【笔记】Polygon mesh processing读书笔记(5)

    多边形网格处理(5) 5. 参数化(Parameterization) 5.1 通用目标 计算一个目标的参数化意味着为其附着一个坐标系统.这个坐标系统有许多可能的应用,比如纹理映射.法向映射(norm ...

  6. 【笔记】Polygon mesh processing读书笔记(2)

    多边形网格处理系列第二篇 文章目录 @[toc] 2. 网格数据结构 基于面的数据结构 基本情况 优缺点 改进的face-based数据结构 基于边的数据结构 基于半边的数据结构 基于有向边的数据结构 ...

  7. Polygon Mesh Processing读书笔记——1三角网格Triangle Meshes

    最近看论文深感基础知识的匮乏,所以补充一些图形几何方面的知识,首先是这本书的封面. 主要章节介绍 本书讨论了基于多边形网格的几何处理管道的主要组件,如下图所示. 为了本书的指导目的,主题的描述顺序与图 ...

  8. 【笔记】Polygon mesh processing 读书笔记(3)

    文章目录 3. 微分几何 曲线 弧长 曲率 表面 表面的参数化表示 度量性质 **第一基本形式** **各向异性** 表面曲率 **Euler定理** **曲率张量** **固有几何(Intrinsi ...

  9. 【笔记】Polygon mesh processing 学习笔记(7)

    多边形网格处理(7) 7. Repairing Definetion Problem statement Model repair, removing artifacts from a geometr ...

最新文章

  1. 9月13日学习内容整理:异常处理
  2. BZOJ 1821: [JSOI2010]Group 部落划分 Group【MST】
  3. python爬去百度搜索结果_python实现提取百度搜索结果的方法
  4. 戴帽子对眼睛是否有好处
  5. 数据结构思维 第十七章 排序
  6. fast角点检测 java_opencv3_java 图像的角点检测DetectConers goodFeaturesToTrack
  7. uploadify 上传文件出现HTTP 404错误
  8. 服务器换主板要重装系统吗,换主板需要重装系统吗【解决方案】
  9. 机器人学基础(二):机器人运动学
  10. Python爬虫反反爬:CSS反爬加密彻底破解!
  11. 【已解决】Win10系统点击ikbc机械键盘win键无效的解决方法
  12. 国产ETL工具/ETL 产品 (BeeDI ) 集团财务 双向同步 审核平台
  13. hdu 4009 Transfer water(最小树形图模板)
  14. 树的直径/重心 学习笔记
  15. 手机网站开发必修课[1]:手机浏览器
  16. python 常用系统内置模块
  17. 【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(ping、telnet、nslookup、arp、tracert、ipconfig)
  18. biji0000000
  19. mysql查询数据库文件信息_查询数据库信息
  20. 学生使用计算机登记表,电脑室使用登记表.doc

热门文章

  1. 去中心化数据库Bluzelle公布2021年路线图,将于2月3日上线主网
  2. 手把手系列|风控建模中共线性的影响和处理(上)
  3. 软件工程(2018)第四次团队作业
  4. git上传项目全部流程
  5. c#仿照qq登录界面编辑框内容操作
  6. 玩转Web之servlet(一)---怎样创建一个servlet
  7. C/C++多种方法获取文件大小(转)
  8. 如何去掉UITableViewController中的分隔线setSeparatorStyle
  9. WPF学习:分页控件
  10. 使用Python+md5删除本地重复(同一张不重名)的照片