Имам 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;