这个问题很难解释,所以我会用一张图片来帮助我:
我正在尝试在水箱中间与鼠标之间找到一个角度。橙色点表示鼠标位置,红线将两个实例分开,绿色/石灰线表示坦克的炮塔角度。我已经多次查看堆栈溢出,但无济于事,我找到了解决问题的方法。我什至用谷歌搜索过。在这两种情况下,我都找到了很多组代码来“寻找角度”。我确信这些工作,所以我怀疑我的问题出在糟糕的代码手中。我猜这个错误是在 MouseMotionListener 中发现的。
我用来创建伪线(不是绿线或红线)的两个点是坦克的中点new Point(Tank.getX() + 16, Tank.getY() + 16)
(坦克大小为 32x32)和鼠标点(当有新的鼠标移动事件时设置)。
关于我的程序的详细信息:
- 创建了一个框架并附加了一个 MouseMotionListener。
- 一个 JPanel 被创建并添加到框架中。
- 一切都被绘制到 JPanel 上。
简而言之,我的getAngle()
代码错了,我的 MouseMotionListener 错了,或者我给出了错误的参数。问题是什么?...
编辑:正如评论中所要求的,这里是我的代码和输出:
代码:
public static float getAngle(Point source, Point destination) {
System.out.println(source + "\n" + destination);
double xDiff = source.x - destination.x;
double yDiff = source.y - destination.y;
System.out.println((float) Math.toDegrees(Math.atan2(yDiff, xDiff)));
return (float) Math.toDegrees(Math.atan2(yDiff, xDiff));
}
输出:
java.awt.Point[x=116,y=116] // Source point
java.awt.Point[x=134,y=123] // Destination point
-158.7495