2013-04-14 52 views
0

我想了解Marching Cube Algorithm,因此我想我已經理解了三角形是如何形成的以及如何在每個網格中計算法線。我可以看到有一種鏈接列表結構將每個網格鏈接到另一個網格。但是,當我單獨通過每個三角形(每個網格的三角形)(t [0],..,..)的GetDepth(t [m])時,它會返回節點的深度。如何在MarchingCube算法中使用getdepth函數?

功能,

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(這是真的)。 我可以看到,它比較「>」,然後我失去了它。 任何人都可以解釋一下這裏發生了什麼。

回答

1

這似乎是你不熟悉?作爲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-。

+0

謝謝Daryl讓我的生活變得簡單:) – solti