Вы движетесь из точки А в точку Б в 2D пространстве? - PullRequest
2 голосов
/ 10 декабря 2010

Я работаю над проектом, который требует, чтобы я вычислял курс из переменной точки A в переменную точку B в 0 - 360 градусов, чтобы объект в точке A столкнулся с точкой B.

Теперь я не уверен, как этого добиться, я погуглил, но не нашел хорошего решения.

Как бы я рассчитал курс из точки A в точку B в 2D-пространстве в любой ситуации?

Ответы [ 2 ]

8 голосов
/ 10 декабря 2010

В таких языках, как C или C ++, вы можете использовать функцию atan2, которая вычисляет арктангенс y / x по четырем квадрантам с учетом знаков x и y.

Если Aнаходится в точке (x1, y1), а B - в точке (x2, y2), тогда курс в радианах определяется как:

theta_radians = atan2(y2 - y1, x2 - x1);

Диапазон значений theta_radians составляет от -π до + πВы можете преобразовать это в градусы в диапазоне от 0 до 360 следующим образом:

theta_degrees = (theta_radians + M_PI) * 360.0 / (2.0 * M_PI);

$ man atan2

1 голос
/ 10 декабря 2010

Это триг. Вы знаете положение двух точек и можете использовать их, чтобы сделать прямоугольный треугольник. Исходя из этого, вы можете использовать SOH-CAH-TOA , чтобы найти интересующий вас угол. Затем вам нужно определить, в каком квадранте находится треугольник, и соответствующим образом сместить вычисленный угол.

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