Во-первых, вычесть происхождение от A и B:
A = A - origin
B = B - origin
Затем нормализовать векторы:
A = A/||A||
B = B/||B||
Затем найти точечный продукт А и В:
dot = A . B
Затем найдите обратный косинус. Это ваш угол:
angle = acos(dot)
(Обратите внимание, что результат в радианах Для преобразования градусов, умножить на 180 и разделить на π.).
Здесь C++ исходный код, который использует GLM для реализации этого метод:
float angleBetween(
glm::vec3 a,
glm::vec3 b,
glm::vec3 origin
){
glm::vec3 da=glm::normalize(a-origin);
glm::vec3 db=glm::normalize(b-origin);
return glm::acos(glm::dot(da, db));
}
Что это связано с C++? Это вопрос математики. –