Выбор правильного решения от ASIN - PullRequest
1 голос
/ 16 августа 2011

Я получаю величину 2 векторов, которые представляют скорость транспортного средства в направлении север-юг и восток-запад. Север считается положительным, Юг - отрицательным, Восток - положительным и Запад - отрицательным. Очевидно, они перпендикулярны друг другу. Я могу вычислить величину сложения двух векторов, используя теорему Пифагора, но когда дело доходит до угла, возникает проблема. Я использую Math.asin, но есть два решения для данного синуса. Два угла, например, 45 и 135, имеют одинаковый синус. Как я могу указать на метод, какое решение мне бы хотелось, поскольку я с самого начала знаю, движется ли транспортное средство на северо-восток или юго-восток?

1 Ответ

1 голос
/ 16 августа 2011

Вы можете взять арктангенс, используя Math.Atan2(y, x) вместо арксинуса, чтобы получить направление. Atan2 возвращает:

  • arctan (y / x), если x! = 0 и y! = 0 (всегда в (-pi, pi])
  • пи, если у = 0 и х <0 </li>
  • 0, если y = 0 и x> = 0
  • pi / 2, если x = 0 и y> 0
  • -pi / 2, если x = 0 и y <0 </li>

(Граничные условия определены в документации MSDN )

Например, если x = -1 и y = 1, Атан (-1,1) будет 3pi / 4 (135 градусов), а не 45 градусов.

...