Calcular o plano perpendicular a um triângulo no espaço 3D
Pergunta
Eu tenho um triângulo no espaço 3D definido por seus 3 vértices, p0, p1 e p2.
Desejo calcular um plano neste espaço 3D que fica ao longo de P0 e P1 e enfrenta um terceiro ponto, p2.
Este avião deve ser definido por uma posição e direção normalizada/
Além de deitar -se ao longo de P0 e P1, e de frente para P2, o avião também deve ser perpendicular ao plano criado por P0, P1 e P2
Eu lutei com isso por um bom tempo e qualquer ajuda que alguém possa oferecer é muito apreciada.
Solução
Sua pergunta está mal posta. Para qualquer avião que esteja em P0 e P1, haverá algum ponto nesse plano que "enfrente" o ponto P2. Então, tudo o que resta para calcular é algum avião ao longo de P0 e P1.
normal = normalize(cross(p1-p0, pX-p0)) //pX is anything except p1
planePoint = p0
EDITAR: Ver comentários
Aqui está um exemplo da minha explicação de comentário
oitava: 14> p0
p0 =
0 0 0
oitava: 15> P1
p1 =
0 0 5
oitava: 16> P2
p2 =
5 0 0
oitava: 17> cruz (P1-P0, Cross (P1-P0, P2-P0))
Ans =
-125 0 0
Você notará que o sinal está errado, jogue com a ordem dos parâmetros no produto cruzado para que ele volte à maneira certa. Também não se esqueça de normalizar ... mas isso não afetará a direção. Verifique também para garantir que a norma após cada produto cruzado não esteja perto de 0, caso contrário, não há resposta única .. (Triângulo forma uma linha)
Outras dicas
A menos que eu esteja entendendo mal o que você está pedindo, um vetor da linha para P2 será o normal para o avião que você está tentando definir. Basicamente, você constrói uma linha em ângulos retos na linha P0-P1, passando pelo P2.