Как узнать угол между вектором взгляда и точкой, используя любой язык?
Разрабатываю игру. Появилась необходимость найти угол между вектором направления взгляда персонажа и центром объекта, но не понимаю как это сделать.
Ниже приведу схему (вид сверху) для наглядности вопроса:
a - вектор направления взгляда
B - точка, центр объекта, к которому надо найти угол
c - вектор a, повернутый на необходимый градус
α - угол, необходимый для поворота вектора a так, чтобы он смотрел на B
Известны позиции: вектора a, точки B. Еще известен угол поворота вектора a вокруг своей оси.
Проблема возникает из-за того что я не знаю длину вектора a, здесь он нарисован просто для визуализации проблемы.
Ответы (1 шт):
Вариант такой:
у вас есть вектора а.
Есть вектор b - он имеет начало в точке стояния вашего героя (точка глаз) и конец этого вектора в точке B.
Посчитаем, что система координат у вас новая, местная... и точка стояния вашего героя это нулевые координаты, так проще.
есть теорема, что скалярное произведение векторов:
a·b = x1*x2 + y1*y2 + z1*z2. a (x1, y1, z1) - вектор, b (x2, y2 ,z2) - вектор.
alpha - угол между двумя векторами.
cos(alpha) = (x1*x2 + y1*y2 + z1*z2) / (|a|*|b|). Где |a| и |b| - длины векторов.
Длина вектора равна квадратному корню из (x^2 + y^2 + z^2).
