В игре я пытаюсь вычислить угол между тем, куда я смотрю, и положением другого объекта на сцене. Я получил угол, используя следующий код:
Vec3 out_sub;
Math.Subtract(pEnt->vOrigin, pLocalEnt->vOrigin, out_sub);
float angle = Math.DotProductAcos(out_sub, vec3LookAt);
Этот код дает мне угол между тем, где я смотрю, и объектом на сцене. Но есть небольшая проблема.
Когда я смотрю не прямо на объект, а немного левее, он говорит, что мне нужно повернуть на 10 градусов, чтобы смотреть прямо на объект. Что совершенно правильно.
Но, когда я смотрю немного правее объекта, он также говорит, что мне нужно повернуть на 10 градусов, чтобы смотреть прямо на объект.
Проблема здесь в том, что я не могу сказать, в какую сторону повернуть. Я знаю только его 10 градусов. Но нужно ли поворачивать влево или вправо? Вот что мне нужно выяснить.
Как я могу это понять?