2013-04-14 2 views
0

Marching Cube Algorithm을 이해하려고합니다. 삼각형이 어떻게 형성되고 각 격자에서 법선이 계산되는지를 이해했다고 생각합니다. 각 그리드를 다른 그리드로 연결하는 연결된 목록 종류의 구조가 있음을 알 수 있습니다. 그러나 각 삼각형 (각 그리드의 삼각형) (t [0], .., ..)을 개별적으로 전달하는 GetDepth (t [m])를 보았을 때 노드의 깊이가 반환됩니다. 그것의 최대 Z를 찾기 위해 노력하고 같은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; 
} 

것 같습니다 (이것은 사실이다). ">"를 비교 한 다음 잃어버린 것을 볼 수 있습니다. 아무도 여기에서 무슨 일이 일어나고 있는지 설명해주십시오.

답변

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