我想在我的程序中计算两条线之间的角度。我有它们的 (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;`
atan2方法允许计算你所选择的线段和水平轴之间的角度,所以如果你放一些绝对值,它可能会像现在这样工作。vector1.angle(vector2)
的角度,得到两个向量之间的角度,从而得到
double angle=vectorFrom.angle(vectorTo)