algorithm - 四面体网格中的点位置

标签 algorithm computational-geometry

四面体网格中的点定位是否有任何经过验证的数据结构,其中四面体都是不相交但彼此“接触”的? IE。大多数面孔恰好是两个四面体的面孔。

位置我的意思是我想找出给定点位于哪个四面体中,或者它是否不位于任何四面体中。

到目前为止,我已经尝试过:

  1. 一个简单的 KD 树。这对我的需求来说太慢了,因为平均树深度非常高,而且我仍然有很多单独的四面体要在每片叶子中进行测试。

  2. 包含每个单元格的所有相交四面体的网格。这似乎工作得更好,但仍然不够快。首先,网格包含很多空单元格,因为我的整体网格不是很“四四方方”。其次,实际上确实包含四面体的大多数细胞确实包含很多(10+)。我想这是因为很多四面体共享每个顶点,一旦一个顶点在一个单元格中,它所有相邻的四面体也是如此。

关于输入数据的一些进一步信息:网格通常不是凸面的,可能有孔洞或夹杂物。尽管后两个不太可能,但我必须处理它们,这使得在没有(昂贵且复杂的?)预处理的情况下“行走”是不可能的。

最佳答案

如果您正在处理由具有邻接信息的四面体组成的 3D 三角剖分,您可以只使用行走。这是点定位的标准技术,使用 3D 方向测试

有关详细信息,请参阅 Olivier Devillers 等人的论文在三角剖分中行走。 (谷歌它,你会找到它的 PDF。)

关于algorithm - 四面体网格中的点位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11849435/

相关文章:

python - 比提供的解决方案更快地获取排列索引和索引处的排列

java - 如何在此代码中显示负数阶乘

python - 如何有效地确定一组点是否包含两个接近的点

matlab - 在Matlab中找到曲线的交点

algorithm - 求二维数据集的面积

algorithm - 如何证明以下算法的正确性?

algorithm - 找到 N^2 个数字的中位数,其中有 N 个数字有内存

performance - 协商移动应用程序的流量速度 - 算法?

python - 迭代多维数组并搜索形成正方形的点

c++ - 使用 C/C++ 制作球体上的点、线和多边形