JavaScript

Дано две точки с координатами x1,y1 и x2,y2, Найдите формулу для расчета угла поворота второй точки относительно первой.

Можно использовать тригонометрические функции. Если нужно, возьмите одну из осей в качестве основы.
Точку нельзя повернуть и угла у точки не бывает. Угол может быть между отрезками / прямыми / векторами, но никак не между точками. Потому Для угла нужно минимум ТРИ точки - для формирования двух векторов.

Сначала находим точку, относительно которой будем поворачивать. Расстояние от этой точки до двух заданных должно совпадать. Из условия можно предположить, что эта точка должна лежать на одной из осей. Предположим, что эта точка лежит на оси X: (x0, 0). Если x1 = x2, придётся брать точку на оси Y (0, y0) - вычисления будут полностью аналогичными.

Получаем (** - "в степени"):
(x0 - x1) ** 2 + y1 ** 2 = (x0 - x2) ** 2 + y2 ** 2 =>
x0 * 2 * (x2 - x1) = (x2 ** 2 + y2 ** 2) - (x1 ** 2 + y1 ** 2) =>
x0 = ((x2 ** 2 + y2 ** 2) - (x1 ** 2 + y1 ** 2)) / (2 * (x2 - x1))

По свойствам скалярного произведения векторов находим косинус угла между векторами:

q = ((x2 - x0) * (x1 - x0) + y2 * y1) / (sqrt((x2 - x0) ** 2 + y2 ** 2) * sqrt((x1 - x0) ** 2 + y1 ** 2))

Ответ: arccos(q)
Валерий Рогожинов
Валерий Рогожинов
75 788
Лучший ответ
Угол между двумя прямыми
tg (f) = +-(k2-k1)/(1+k1*k2), где k это y=kx+b
Gan Zhi
Gan Zhi
103