Найти угол между двумя точками относительно горизонтальной оси? - PullRequest
1 голос
/ 20 октября 2011

У меня есть две точки, одна всегда в начале координат (0,0), а другая может быть где угодно в мире. Я бы хотел найти угол между ними, соответствующий горизонтальной оси.

     |     2
     |    /
     |   / 
     |  /  
     | /     
     |/ a  
  ---1-------------- (horizontal axis)
     |

  a = angle (~50 degrees, counter clockwise)

В приведенном выше примере я построил бы прямоугольный треугольник и использовал sohcahtoa для определения нужного мне нужного угла, но он становится немного уродливым, когда вторая точка находится в другом квадранте, как в этом случае:

2    |
\    |
 \   |
  \  |
   \a|a   
    \|a
  ---1--------------
     |
     |

  a = angle (~135, counter clockwise)

Я просто получаю кучу разных случаев в зависимости от того, в каком квадранте находится вторая точка. Я думаю, что должно быть гораздо более простое, общее решение. Это похоже на попытку найти угол между точкой на краю круга и его центром, соответствующей горизонтальной оси начала координат.

Какой хороший способ сделать это?

Ответы [ 2 ]

8 голосов
/ 20 октября 2011

Большинство языков программирования / API предоставляют функцию atan2(), которая находит угол , а учитывает квадрант.Просто используйте это.

0 голосов
/ 20 октября 2011

Сначала мы хотели бы найти уравнение прямой, соединяющей две точки:

Пусть p = (x0, y0) - вторая точка.если х = 0, то ответ 90 градусов.в противном случае пусть m будет y0 / x0.

y = m (x-x0) + y0

tg ^ -1 (то есть arctg) из m равно углу.* также обратите внимание, что если (x0, y0) == (0,0), то угол не определен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...