Какая формула поворота объекта на другой объект в 2D?

Здравствуйте! Подскажите, пожалуйста, формулу, по которой можно рассчитать угол ( в радианах ) поворота объекта так, чтобы он смотрел на другой объект. Что-то не получается объяснить на словах, по этому я прикрепил картинку.
0c927b10096d465886e203bf567a4200.png
Нужно просто синенькую фигуру повернуть на красную.

Спасибо.
  • Вопрос задан
  • 1036 просмотров
Пригласить эксперта
Ответы на вопрос 3
TomasHuk
@TomasHuk
1 По формуле ищем уравнение прямой, которая проходит через два точки.
2 Приводим найденное уравнение к уравнению прямой с угловым коэфициентом.
3 Через угловой коэффициент в уравнении прямой (равен тангенсу) находим угол.
4 Поворачиваем синюю фигуру на угол, равный разности между найденым углом и текущим углом фигуры.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Берем 3 точки (P) на плоскости с координатами (X,Y).
Пример кода на Pascal/Delphi:
type TPoint = record
  X: Longint;
  Y: Longint;
end;

function GetUgol(P1, P2, P3: TPoint):Integer;
var
  M1, M2, SM, CosUgol: Single; //Модули А1 и А2, их скалярное произведение и косинус угла
begin
  M1 := Sqrt(Sqr(P2.X - P1.X) + Sqr(P2.Y - P1.Y));
  M2 := Sqrt(Sqr(P3.X - P1.X) + Sqr(P3.Y - P1.Y));
  SM := (P2.X - P1.X) * (P3.X - P1.X) + (P2.Y - P1.Y) * (P3.Y - P1.Y);
  CosUgol := SM / (M1 * M2);
  GetUgol := Round(ArcCos(CosUgol) * 180);
end;
Ответ написан
@cliff_5
Я делал так. Пример на js
function angleToPoint(x,y,X,Y){
var a=Math.atan2(X-x,(Y-y)*-1)*180/Math.PI;
return a<0?360+a:a;
 }

Возвращает значение от 0 до 360. Но это в углах. Можно похимичить, и перевести в радианы обратно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы