Найти угол между двумя векторами (с учетом знака) - C#
Формулировка задачи:
Всем доброго времени суток
Пишу игру, в процессе пользуясь векторной алгеброй (это упрощает многие расчеты).
Встала задача нахождения угла между двумя векторами. Однако, есть одно условие - я хочу, чтобы угол, откладываемый по часовой стрелке, считался положительным, а против - отрицательным.
Для наглядности приведу всё с кусками кода:
Есть класс вектора
где Point (очевидно) - простенькая структурка типа:
Необходимо найти угол между двумя векторами типа GVector2, но с таким условием: пусть если "направление" этого угла по часовой стрелке, угол будет положительным, если против - отрицательным.
Найти угол между векторами А и В - формула, предложенная здесь, даст мне только численное значение косинуса угла, что даст голую величину.
Теоритически, проблему можно решить множеством:
Что, как мне кажется, не лучшее решение.
Буду благодарен за любую подсказку.
Да, если суть вопроса не понятна - отпишите, я попробую объяснить более подробно.
class GVector2 { public Point StartPoint; public Point EndPoint; }
public struct Point { public float X; public float Y; }
if(...) ... else if(...) // (повторить много раз)
Решение задачи: «Найти угол между двумя векторами (с учетом знака)»
textual
Листинг программы
vec = B - A angle = atan2(vec.y, vec.x) // в радианах degrees = angle * (180/PI) // или angle * 57.295779513, в градусах
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д