0

マーチングキューブをC#で実装しようとしていますが、アルゴリズムが理解できず、実装方法がわからない部分に到達しました。

int Polygonise(GRIDCELL grid, double isolevel, TRIANGLE *triangles)

私が本当に理解していない3番目の議論。私はそれがポインタであることを知っていますが、後でアルゴで三角形を設定すると、変数が構造体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。なぜそれがポインタなのかもわかりません。

4

2 に答える 2

2

の呼び出し元は、すべてのPolygonize三角形*trianglesを含むのに十分な長さの割り当てられた配列を指します。c#で同等のものは、TRIANGLE[]またはList<TRIANGLE>()

于 2012-07-18T12:39:59.820 に答える
1

この関数はボクセル/セルのGRIDを取得し、三角形を出力しているように見えます。三角形のリストが表示されるので、これはポインタです。

于 2012-07-18T12:40:51.523 に答える