2012-07-18 45 views
0

我想在C#中实现行进多维数据集,但是我已经到了一个我不了解算法的部分,我不知道如何实现它。行进多维数据集(C++到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]。这没有意义,因为在我们设置trianglesTRIANGLE *triangles之前。我也不明白为什么它是一个指针。

+4

为什么'三角形[ntriang]'没有意义?它只是使用'ntriang'来索引'triangles'指向的数组。表达式的其余部分将一些东西赋给'ntriang-th'位置的struct成员'p'。 – pmr 2012-07-18 12:38:22

回答

2

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

+0

如何使用带List的指针? – 2012-07-18 13:31:00

+0

带有一个你必须添加的列表,然后你可以使用[]运算符作为数组。 – 2012-07-18 13:53:44

1

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