Убедитесь, что точка находится внутри конуса в трехмерном пространстве

Рассматривать:

X(x1,y1,z1) the point I need to verify if it is inside a cone. M(x2,y2,z2) the vertex of the cone. (the top point of the cone) N(x3,y3,z3) the point in the middle of the cone's base.

Я обнаружил, что если точка X находится на конусе, необходимо проверить это уравнение:

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

Где точка - скалярное произведение двух векторов, а альфа - угол между этими двумя векторами.

На основании формулы я рассчитал, что:

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

Так,

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)

К сожалению, приведенные выше расчеты, похоже, дают мне неверные результаты. Что я делаю неправильно?

Также я подозреваю, что проверить, еслиX находится внутри конуса, я должен поставить<= вместо= в формуле. Это правильно?

Я использую это: я разрабатываю игру, в которой пулемет должен начать стрелять, когда объект находится в «виде». Этот вид будет конусом. Вершина конуса будет находиться в пулемете, а основание конуса будет на некотором известном расстоянии впереди. Любой предмет, попадающий в этот конус, пулемет пристрелит.

Ответы на вопрос(2)

Ваш ответ на вопрос