查找哪些三角形共享一个顶点的最快算法

Posted

技术标签:

【中文标题】查找哪些三角形共享一个顶点的最快算法【英文标题】:Fastest algorithm to lookup which triangles share a vertex 【发布时间】:2020-02-29 06:12:04 【问题描述】:

有类似here 描述的索引和顶点缓冲区来绘制三角形

在我的代码中,我经常需要查找哪些三角形共享一个特定的顶点。最基本的做法是:

遍历索引缓冲区并查找包含该特定顶点索引的三角形。

现在我想知道我是否缺少更高效或标准的算法。谢谢。

【问题讨论】:

【参考方案1】:

创建第二个查找表,将顶点的索引映射到包含它的三角形列表。

可以通过循环索引缓冲区并将三角形添加到它的所有三个顶点来创建它。

例如,如果索引缓冲区是:

0, 1, 4
0, 2, 3

查找表将是

0 -> [t0, t1]
1 -> [t0]
2 -> [t1]
3 -> [t1]
4 -> [t0]

如果正在更新数据,则必须相应地更新此查找表。根据共享单个顶点的三角形数量有多大,以及添加/删除它们的频率,您可能需要使用哈希表而不是普通列表来存储这些三角形。

【讨论】:

以上是关于查找哪些三角形共享一个顶点的最快算法的主要内容,如果未能解决你的问题,请参考以下文章

从顶点数组生成三角形网格的算法

求一个C语言算法:已知三角形的三个顶点的坐标,求三角形面积

我需要一个像素完美的三角形填充算法来避免锯齿伪影

PCL源码分析:Ear Clipping三角化算法(阅读经典)

Threejs 开发 3D 地图实践总结

适用于 GPU 的最快可用 Delaunay 三角剖分算法