Как работает функция getdepth в алгоритме MarchingCube?

Я пытаюсь понять алгоритм 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;
}

Похоже, он пытается найти макс Z (это правда).
Я вижу, что он сравнивает «>», и тогда я потерял его.
Может ли кто-нибудь объяснить, пожалуйста, что здесь происходит.

0

Решение

Казалось бы, вы незнакомы с? как троичный оператор.
Код, который вы разместили, эквивалентен следующему:

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;
}

И да, это находит максимальное значение z в массиве p.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]