Ответ в теме: Угол между прямыми на Prolog

#2374

Для вычисления угла между прямыми, заданными общими уравнениями можно применить формулу, приведенную на рисунке (она достаточно легко выводится если нарисовать прямые на бумаге).

На SWI Prolog решение может выглядеть следующим образом:

radian_to_degree(Radian, Degree):-
  Degree is Radian * 180 / 3.1415926535.
  
angle(equation(A1, B1, _C1), equation(A2, B2, _C2), Angle):-
  CosAngle is (A1*A2 + B1*B2) / (sqrt(A1*A1 + B1*B1) * sqrt(A2*A2 + B2*B2)),
  AngleRad is acos(CosAngle),
  radian_to_degree(AngleRad, Angle).

По формуле вычисляется значение косинуса угла, чтобы получить значение угла необходимо вычислить арккосинус. При этом угол будет получен в радианах, для перевода результата в градусы используется вспомогательная функция radian_to_degree.

Вложения:
Вы должны войти для просмотра вложений.