У меня есть 2 точки в плоскости x, y. Я хочу повернуть одну точку на другую, повернув ее вокруг оси Z.
Как найти угол поворота одной точки на другую?
У меня есть 2 точки в плоскости x, y. Я хочу повернуть одну точку на другую, повернув ее вокруг оси Z.
Как найти угол поворота одной точки на другую?
Что ж, sin
этого угла равно [a, b] / (abs(a) * abs(b))
, а его cos
равно (a, b) / (abs(a) * abs(b))
, где [a, b]
— это векторное произведение a
и b
, (a, b)
— скалярное произведение, а abs(x)
— длина вектора x
. Довольно легко найти угол, зная его sin
и cos
.
Возможно, лучше всего получить углы от горизонтали для двух точек, а затем взять разницу.
angle_1 = atan2( y_1, x_1 );
angle_2 = atan2( y_2, x_2 );
rotation_angle = angle_1-angle_2;