我正在尝试在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
之前,这没有任何意义。我也不明白为什么它是一个指针。
答案 0 :(得分:2)
Polygonize
的调用者期望*triangles
指向一个分配的数组,其长度足以包含所有三角形。 c#中的等价物可以是TRIANGLE[]
或List<TRIANGLE>()
答案 1 :(得分:1)
看起来这个函数采用体素/单元格的GRID并输出三角形。它是一个指针,因为你将获得一个三角形列表。