
建立几何拓扑关系呢,就是利用已经弄好的合理的数据结构,这样就能很快地找到文件里的各个元素。整个拓扑重构的过程,就是先读取三角面片,弄出一个没有多余顶点的点表,把各个点、线、面相互之间的位置关系保存好,放在拓扑结构里。具体来说,就是把所有三角形面片的顶点坐标都查看一遍,把顶点数据一个一个地比较,把坐标相同的顶点聚合在一起,这样就能建立一个没有重复顶点坐标数据的点表。详细的步骤是这样的:先读取 STL 文件里三角面片的顶点坐标,看看点表里面是不是已经有这个顶点的 x 坐标了,如果有,接着看它的 y 坐标有没有,如果没有,就把这个点存到点表里,同样的道理,再依次判断 y、z 坐标,一直到把所有的点都判断完,这样建立的点表里面就不会有重复的顶点了。

STL 文件拓扑重构,本质上就是找到多余的数据,然后把重复的顶点去掉。因为直接去读取搜寻会花很多时间,所以很多学者都想出了不同的办法,大多数是引入一些数据结构,让搜寻顶点的速度变快。我查找了国内外的很多文献,综合考虑了算法花费的时间和复杂程度,决定在这篇文章里用哈希表来完成 STL 模型的拓扑重构。哈希表是一种通过关键字就能很快查找的数据结构,它其实就是一个顺序表。这里面有个叫哈希函数的映射函数,还有存放记录的哈希表。建立哈希表主要有两个关键的步骤:一个是设计哈希函数,另一个是解决哈希冲突。