Я пытаюсь вычислить нормаль поверхности двумерного многоугольника. Я использую метод Ньюэлла из вики OpenGL для вычисления нормальной поверхности. https://www.opengl.org/wiki/Calculating_a_Surface_Normal Из моего понимания нормаль должна быть в направлении y, но она всегда возвращает [0, 0, 0]. Значение y изменяется на -1 на второй итерации и возвращается к нулю на четвертой итерации.Вычислить нормальный вектор многоугольника - метод Ньюэллса
p = [[0, 0, 0]
[1, 0, 0]
[0, 0, 1]
[1, 0, 1]]
function calcNormal(p) {
var normal = [0, 0, 0];
for(var i = 0; i < p.length; i++) {
var j = (i + 1) % (p.length);
normal[0] += (p[i][1] - p[j][1]) * (p[i][2] + p[j][2]);
normal[1] += (p[i][2] - p[j][2]) * (p[i][0] + p[j][0]);
normal[2] += (p[i][0] - p[j][0]) * (p[i][1] + p[j][1]);
}
return normal;
}