Я пытаюсь вычислить угол между двумя линиями в моей программе. У меня есть их (x1, y1)
и (x2, y2)
для обеих строк. x2
и y2
первой строки совпадают с x1
и y1
.
второй строки. Я использую Point2D
из библиотеки JavaFX.
Мне нужно рассчитать угол, чтобы узнать, в какую сторону повернуть -> например, написать «повернуть налево» или «повернуть направо». Я знаю, какая точка является моей начальной точкой, средней точкой и конечной точкой.
Я перепробовал все методы, которые мне удалось найти в Интернете, но ни один из них не работает. Я всегда получаю либо 0,0, либо 180 градусов.
Мне бы хотелось, чтобы метод всегда брал угол по часовой стрелке, выходящий из линии 1 (или против часовой стрелки), независимо от того, идет он вверх или вниз в системе координат или слева направо.
Я продолжаю читать о функции Math.atan2
, но я не понимаю, как интерпретировать результат или работает ли он для моей проблемы.
Вот что я сейчас пытаюсь:
Point2D vectorFrom = new Point2D(c.getX2() - c.getX1(), - (c.getY2() -
c.getY1()));
Point2D vectorTo = new Point2D(n.getX2() - n.getX1(), - (n.getY2() -
n.getY1()));
double direction1 = Math.atan2(vectorFrom.getX(), vectorFrom.getY());
double direction2 = Math.atan2(vectorTo.getX(), vectorTo.getY();
double angle = direction2 - direction1;`