Я работаю над небольшим проектом HLSL / C ++, чтобы перейти к моей графической работе, и я не уверен, как мне получить лицевой вектор из вершинного многоугольника. Я не могу найти формулу.
Позиции P1, P2, P3
Давайте назовем их классом VertexPoint с P1.x, P1.y, P1.z, например?
Ответы:
Вы можете легко найти нормаль, вычислив два вектора: V1 = P2-P1 и V2 = P3-P1, а затем найти перекрестное произведение N = V1 x V2. Затем вы нормализуете N. В зависимости от упорядочения вершин (по часовой стрелке или против часовой стрелки) вы получите нормальный фронт или тыл.
Вы также должны убедиться, что три три точки не выровнены, если они есть, вы должны выбрать другую точку.
источник