Для задачи у меня есть: а) упорядоченный список точек б) список точек, составляющих каждый многоугольник
Например
point1 = (1, 2, 2)
point2 = (1, 2, 3)
point3 = (1, 3, 3)
polygon1 = [ point1, point2, point3 ]
=> polygon1 - это треугольник, который может быть частью внешней части модели.
Мне нужно рассчитать правильные нормали для освещения в OpenGL.
Я знаю, что могу вычислить векторы на плоскости из заданных точек и получить перекрестное произведение, чтобы получить A нормаль к плоскости, но OpenGL требует, чтобы нормали указывали в правильном направлении (т.е. наружу).
Процесс должен быть автоматизирован, потому что у меня много многоугольников.
Если я выберу два вектора на плоскости, я не могу сказать, как я могу быть уверен, что по нормали я рассчитал точки в правильном направлении для освещения (т. Е. Находится снаружи модели).
Я подумал, что мог бы добавить вычисленную нормаль к точке на плоскости и посмотреть, находится ли она дальше от начала координат, чтобы увидеть, верна ли она, но модель довольно сложна, и некоторые нормали, возможно, должны указывать на начало координат
Если это помогает, оказывается, что все многоугольники являются треугольниками (хотя не понимаю, как это помогает, должно быть в состоянии абстрагироваться для любого многоугольника)