我正在尝试制作一个程序,让空间中的某个点找到包含它的网格中的三角形。我有一些中间步骤。 但我试图找到另一种方法,因为它效率不高。
首先:
对于K三角形,我是该三角形的顶点,以便能够找到相邻的三角形并且与该顶点相对。 对于网格中的所有三角形,需要在O(nt)或O(ntlog2(nt))中完成。 我想使用无负载的地图来存储每个三角形的所有边,我可以在O(1)中找到我正在寻找的三角形,以便O(nt)中的所有网格。
但我不知道如何编码我的无序地图,以便在第一个colone中包含2个顶点值,在第二列和第三列中包含三角形的数字。
我的网格属性是:
public:
//attribut
std::vector<Sommet> m_Sommet; // Sommet's array
std::vector<Triangle> m_Triangle; //Triangle's array
如果你有任何帮助,那就太好了。
答案 0 :(得分:0)
您应该使用与网格关联的分区结构,边界体积层次结构非常易于计算,轻量且高效(您可以查看this page的各种排序算法)。如果您的网格是静态的,那么kd树应该更快,但构建起来也更复杂。