选择网格数据结构的时候一般考虑下面两个因素:
拓扑需求(Topological Requirements) :需要表示什么样的网格?是二维流形,还是其它更复杂的网格?是单纯的三角形网格,或者其它任意的多边形网格?是需要给当前的网格附加上其它的网格?
算法需求(Algorithmic Requirements):使用什么样的算法?是简单的渲染还是需要频繁的访问相邻的点边面?是静态网格还是动态网格?对于网格是否需要附加一些其它的属性?对内存的消耗是否特别在意?
评估一个数据结构的好坏有下面几个标准:
建立数据结构所需要预处理的时间
查询操作的响应时间
执行某项具体操作的时间
内存消耗和冗余
Faced-Based Data Structures
这种数据结构最直观的优点是简单,这种数据结构由网格所有面的集合构成,而对于每一个面则使用组成面多边形的的点来表示。
以三角形网格为例,假设使用32位的单精度浮点数来表示坐标则,那么使用顶点的数据来表示一个三角形则需要36个字节(3 vertex * 3 dimension * 4 byte = 36 byte)。
通过上一部分的学习可以知道顶点的邻边的平均数量为6,即在这种数据结构中一个顶点平均会被存储6次,所以可以估算使用这种数据结构平均每一个顶点要使用72个字节(3 dimension * 4 byte * 6 time = 72 byte)
可以发现,一个顶点的数据被多次存储&#x