Verificar si el punto está dentro de un cono en el espacio 3D

Considerar:

X(x1,y1,z1) el punto que necesito para verificar si está dentro de un cono.M(x2,y2,z2) El vértice del cono. (el punto superior del cono)N(x3,y3,z3) El punto en el medio de la base del cono.

Descubrí que si un punto X está en el cono, necesita verificar esta ecuación:

cos(alfa) * ||X-M|| * ||N|| = dot(X-M,N)

Donde punto es el producto escalar de 2 vectores, y alfa es el ángulo entre estos 2 vectores.

Basándome en la fórmula, calculé que:

X-M = (x1-x2,y1-y2,z1-z2)

Asi que,

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)

Desafortunadamente, los cálculos anteriores parecen darme resultados erróneos. ¿Qué estoy haciendo mal?

También sospecho que para comprobar siX está dentro del cono, tengo que poner<= en lugar de= en la formula ¿Es esto correcto?

El uso de esto es: desarrollo un juego donde una ametralladora tiene que comenzar a disparar cuando un objeto está en su 'vista'. Esta vista será un cono. El vértice del cono estaría en la ametralladora, la base del cono estará a una distancia conocida por delante. Cualquier objeto que entre en este cono, la ametralladora lo disparará.

Respuestas a la pregunta(2)

Su respuesta a la pregunta