四面体网格中的点位置是否有任何经过验证的数据结构,其中四面体都是不相交但相互“接触”的?即大多数面是正好两个四面体的面。
位置我的意思是我想找出给定点位于哪个四面体中,或者它是否不位于任何四面体中。
到目前为止,我已经尝试过:
一个简单的KD树。这对我的需求来说太慢了,因为平均树深度非常高,而且我仍然有很多单独的四面体要在每片叶子上进行测试。
一个网格,其中包含每个单元格的所有相交四面体。这似乎工作得更好,但仍然不够快。首先,网格包含很多空单元格,因为我的整体网格不是很“四四方方”。其次,实际上确实包含四面体的大多数细胞确实包含很多(10+)。我想这是因为很多四面体共享每个顶点,一旦一个顶点在一个单元格中,它的所有相邻四面体也是。
有关输入数据的一些进一步信息: 网格通常不是凸面的,可能有孔或夹杂物。尽管最后两个不太可能,但我必须处理它们,这使得如果没有(昂贵且复杂的?)预处理,“行走”是不可能的。