Расчет в радианах вращения одной точки вокруг другой - PullRequest
1 голос
/ 13 января 2011

Я пытался решить эту проблему в течение недели и должен был прийти к решению.То, что у меня есть, это 2 точки в 2-мерном пространстве, и мне нужно решить, что такое вращение одного вокруг другого.Если повезет, приложенная диаграмма поможет мне вычислить вращательное значение b вокруг a.

alt text

Я нашел много вещей, которые указывают на поискточечный продукт и т. д., но я все еще ищу это золотое решение: o (

Спасибо!

Ответы [ 3 ]

5 голосов
/ 13 января 2011
Vector2 difference = pointB - pointA;

double rotationInRadians = Math.Atan2(difference.Y, difference.X);

См. http://msdn.microsoft.com/en-us/library/system.math.atan2.aspx для справки.

0 голосов
/ 13 января 2011

Я предполагаю, что восток (вдоль оси X, справа) равен нулю радиан, а + x указывает вправо, а + y указывает вниз.

Положение B относительнодля A это

angle = Arctan2 [(A_y - B_y) / (B_x - A_x)]

Используйте правильную функцию для вычисления правильного квадранта (вероятно, Math.Atan2)

0 голосов
/ 13 января 2011

Предположение:

  • 1.) Найдите наклон m линии A, B.
  • 2.) Преобразовать наклон в угол theta = arctan (m)
  • 3.) Спроецируйте угол на квадрант в декартовой системе координат с центром в точке A, чтобы получить нормализованный угол
...