我试图理解marching cube算法,所以我想我已经理解了三角形是如何形成的,以及如何在每个网格中计算法线。我可以看到有一种链表结构,将每个网格链接到另一个网格但是当我遇到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;
}

它看起来像是在找麦克斯(是真的吗)。
我可以看到它比较“>”然后我就失去了它。
有人能解释一下这里发生了什么吗?

最佳答案

你好像不熟悉?作为ternary operator
您发布的代码相当于以下代码:

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。

关于c++ - MarchingCube算法中的getdepth函数如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15996097/

10-12 21:33