У меня есть две линии: L1 и L2.Я хочу рассчитать угол между двумя линиями.У L1 есть точки: {(x1, y1), (x2, y2)}
, а у L2 есть точки: {(x3, y3), (x4, y4)}
.
Как можно рассчитать угол, образованный между этими двумя линиями, без необходимости вычислять наклоны?Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что иногда у меня появляются горизонтальные линии (линии вдоль оси x), и следующая формула не выполняется (делится на исключение нуля):
arctan((m1 - m2) / (1 - (m1 * m2)))
, где m1
и m2
являются наклонами линии 1 и линии 2 соответственно.Существует ли формула / алгоритм, который может вычислять углы между двумя линиями, не получая исключения деления на ноль?Любая помощь будет принята с благодарностью.
Это мой фрагмент кода:
// Calculates the angle formed between two lines
public static double angleBetween2Lines(Line2D line1, Line2D line2)
{
double slope1 = line1.getY1() - line1.getY2() / line1.getX1() - line1.getX2();
double slope2 = line2.getY1() - line2.getY2() / line2.getX1() - line2.getX2();
double angle = Math.atan((slope1 - slope2) / (1 - (slope1 * slope2)));
return angle;
}
Спасибо.