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.

questionAnswers(2)

yourAnswerToTheQuestion