我正试图在C#中实现行进立方体,但我遇到了一个不理解算法的部分,也不知道如何实现它。
int Polygonise(GRIDCELL grid, double isolevel, TRIANGLE *triangles)
第三个论点我真的不明白。我知道它是一个指针,但稍后在算法中,当你设置三角形时,它看起来就像triangles
变量是TRIANGLE
结构的数组:
int ntriang = 0;
for (int i=0; triTable[cubeindex,i]!=-1; i+=3) {
triangles[ntriang].p[i ] = vertlist[triTable[cubeindex,i ]];
triangles[ntriang].p[i+1] = vertlist[triTable[cubeindex,i+1]];
triangles[ntriang].p[i+2] = vertlist[triTable[cubeindex,i+2]];
ntriang++;
}
注意triangles[ntriang]
。这没有意义,因为在我们将triangles
设置为TRIANGLE *triangles
之前。我也不明白为什么它是一个指针。
Polygonize
的调用方期望*triangles
指向一个足够长的已分配数组,以包含所有三角形。c#中的等价物可以是TRIANGLE[]
或List<TRIANGLE>()
看起来这个函数获取体素/细胞的GRID并输出三角形。它是一个指针,因为你会得到一个三角形列表。