Estoy trabajando en un pequeño proyecto HLSL / C ++ para revisar mi trabajo de gráficos, y no estoy seguro de cómo obtener un vector de orientación de un polígono de vértice. Parece que no puedo encontrar la fórmula.
Las posiciones son P1, P2, P3
Vamos a llamarlos clase VertexPoint con P1.x, P1.y, P1.z por ejemplo?
Respuestas:
Puede encontrar fácilmente la normal calculando dos vectores, V1 = P2-P1 y V2 = P3-P1, y luego encontrar el producto cruzado N = V1 x V2. Luego normaliza N. Dependiendo del orden de los vértices (en sentido horario o antihorario) obtendrá una orientación normal hacia adelante o hacia atrás.
También debe asegurarse de que tres tres puntos no estén alineados, si lo están, debe elegir otro punto.
fuente