Marching Cubes(C ++到C#)

时间:2012-07-18 12:35:42

标签: c++ pointers marching-cubes

我正在尝试在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之前,这没有任何意义。我也不明白为什么它是一个指针。

2 个答案:

答案 0 :(得分:2)

Polygonize的调用者期望*triangles指向一个分配的数组,其长度足以包含所有三角形。 c#中的等价物可以是TRIANGLE[]List<TRIANGLE>()

答案 1 :(得分:1)

看起来这个函数采用体素/单元格的GRID并输出三角形。它是一个指针,因为你将获得一个三角形列表。