C# 良好的三角网格数据结构
我正在寻找一个内存效率高,但方便的数据结构的三维网格或面集组成的三角形 目前我使用的是这种“经典”结构:C# 良好的三角网格数据结构,c#,data-structures,3d,mesh,C#,Data Structures,3d,Mesh,我正在寻找一个内存效率高,但方便的数据结构的三维网格或面集组成的三角形 目前我使用的是这种“经典”结构: 点列表和三角形列表 每个点都有一个X、Y和Z值 每个三角形有三个索引i0、i1、i2,它们表示点列表中的一个点 这是我能想到的最紧凑的布局。它是完美的,如果我想做的是绘制网格,而不是修改或过滤它。 但是,它确实会使大多数修改网格或生成新局部网格的操作非常繁琐,例如: 删除三角形效率很低 仅使用具有少于3个邻居的三角形生成新网格 查找和删除给定边界框中具有一个或所有点的所有三角形 查找具
- 点列表和三角形列表李>
- 每个点都有一个X、Y和Z值
- 每个三角形有三个索引i0、i1、i2,它们表示点列表中的一个点
- 删除三角形效率很低李>
- 仅使用具有少于3个邻居的三角形生成新网格
- 查找和删除给定边界框中具有一个或所有点的所有三角形
- 查找具有特定角度的所有边
- 删除短于特定长度的所有边
我不是在寻找一个完整的库,而是一个我可以自己实现的结构(尽管了解特定库是如何解决这个问题的可能很有趣)有几个开源数据结构可以满足您的需要:
看看比勒费尔德大学(Surface mesh的开发者),我认为这是一个很好的起点 在内存和磁盘三角网格的数据结构方面,已经发表了很多工作。我认为你最好咨询一下你最喜欢的搜索引擎,至少一开始是这样。你可能比从“谢谢”开始做得更糟,我试着先搜索,但显然不是很成功。我没想到会在维基百科上找到如此深入的文章;该页面还提供了一些优秀的搜索术语:面顶点网格、翼边网格、半边网格、四边形网格、角表、顶点网格