Verifique se o ponto está dentro de um cone no espaço 3D
Considerar:
X(x1,y1,z1)
o ponto que eu preciso verificar se está dentro de um cone.M(x2,y2,z2)
o vértice do cone. (o ponto alto do cone)N(x3,y3,z3)
o ponto no meio da base do cone.Eu descobri que se um ponto X está no cone, ele precisa verificar esta equação:
cos(alfa) * ||X-M|| * ||N|| = dot(X-M,N)
Onde ponto é o produto escalar de 2 vetores, e alfa é o ângulo entre esses dois vetores.
Com base na fórmula, calculei que:
X-M = (x1-x2,y1-y2,z1-z2)
Assim,
cos(alfa)
* Math.sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)
* Math.sqrt(x3^2 + y3^2+z3^2)
= x3(x1-x2) + y3(y1-y2) + z3(z1-z2)
Infelizmente, os cálculos acima parecem me dar resultados errados. O que estou fazendo de errado?
Também suspeito que para verificar seX
está dentro do cone, eu tenho que colocar<=
ao invés de=
na fórmula. Isso está correto?
O uso disso é: Eu desenvolvo um jogo onde uma metralhadora tem que começar a atirar quando um objeto está em sua 'visão'. Essa visão será um cone. O vértice do cone estaria na metralhadora, a base do cone estará em alguma distância conhecida à frente. Qualquer objeto que entrar neste cone, a metralhadora vai atirar nele.