0

我试图理解 Marching Cube Algorithm,所以我想我已经理解了三角形是如何形成的以及如何在每个网格中计算法线。我可以看到有一种链表结构将每个网格链接到另一个网格。但是当我遇到 GetDepth(t[m]) 单独通过每个三角形(每个网格的那些三角形) (t[0],..,..) 时,它返回节点的深度。

功能,

float GetDepth(TRIANGLE t) {

    float z;
    z = t.p[0].z;
    z = t.p[1].z > z? t.p[1].z: z;
    z = t.p[2].z > z? t.p[2].z: z;
    return z;
}

看起来它试图找到最大 z(是真的吗)。我可以看到它比较“>”然后我把它弄丢了。谁能解释一下这里发生了什么。

4

1 回答 1

1

会不会觉得你很陌生?作为三元运算符。您发布的代码等效于以下内容:

float GetDepth(TRIANGLE t) {

float z;
z = t.p[0].z;
if (t.p[1].z > z) {z = t.p[1].z;} else {z = z;}
if (t.p[2].z > z) {z = t.p[2].z;} else {z = z;}
return z;
}

是的,这确实找到了 p 数组中的最大值 z。

于 2013-04-14T05:33:46.893 回答