Найти угол между двумя векторами (с учетом знака) - C#

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени суток Пишу игру, в процессе пользуясь векторной алгеброй (это упрощает многие расчеты). Встала задача нахождения угла между двумя векторами. Однако, есть одно условие - я хочу, чтобы угол, откладываемый по часовой стрелке, считался положительным, а против - отрицательным. Для наглядности приведу всё с кусками кода: Есть класс вектора
Листинг программы
  1. class GVector2
  2. {
  3. public Point StartPoint;
  4. public Point EndPoint;
  5. }
где Point (очевидно) - простенькая структурка типа:
Листинг программы
  1. public struct Point
  2. {
  3. public float X;
  4. public float Y;
  5. }
Необходимо найти угол между двумя векторами типа GVector2, но с таким условием: пусть если "направление" этого угла по часовой стрелке, угол будет положительным, если против - отрицательным. Найти угол между векторами А и В - формула, предложенная здесь, даст мне только численное значение косинуса угла, что даст голую величину. Теоритически, проблему можно решить множеством:
Листинг программы
  1. if(...)
  2. ...
  3. else if(...)
  4. // (повторить много раз)
Что, как мне кажется, не лучшее решение. Буду благодарен за любую подсказку. Да, если суть вопроса не понятна - отпишите, я попробую объяснить более подробно.

Решение задачи: «Найти угол между двумя векторами (с учетом знака)»

textual
Листинг программы
  1. vec = B - A
  2. angle = atan2(vec.y, vec.x) // в радианах
  3. degrees = angle * (180/PI) // или angle * 57.295779513, в градусах

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы