У меня есть две строки: 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;
}
Спасибо.