Я пытаюсь понять алгоритм 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 (это правда).
Я вижу, что он сравнивает «>», и тогда я потерял его.
Может ли кто-нибудь объяснить, пожалуйста, что здесь происходит.
Казалось бы, вы незнакомы с? как троичный оператор.
Код, который вы разместили, эквивалентен следующему:
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.
Других решений пока нет …