Estou trabalhando em um pequeno projeto HLSL / C ++ para revisar meu trabalho gráfico e não tenho certeza de como obter um vetor de face de um polígono de vértice. Não consigo encontrar a fórmula.
As posições são P1, P2, P3
Vamos chamá-los de classe VertexPoint com P1.x, P1.y, P1.z, por exemplo?
Respostas:
Você pode encontrar facilmente o normal calculando dois vetores, V1 = P2-P1 e V2 = P3-P1, e depois encontre o produto cruzado N = V1 x V2. Em seguida, você normaliza N. Dependendo da ordem dos vértices (no sentido horário ou anti-horário), você obterá uma face normal para a frente ou para trás.
Você também precisa se certificar de que três três pontos não estejam alinhados; se forem, você precisará escolher outro ponto.
fonte