Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取两点之间的角度_Java_Angle - Fatal编程技术网

Java 获取两点之间的角度

Java 获取两点之间的角度,java,angle,Java,Angle,有个球员。移动光标时,我想得到播放器和光标之间的角度。我的代码是: public void mouseMoved(MouseEvent ev) { float angle = (float) Math.toDegrees(Math.atan2(ev.getX() - player.getCenterX(), ev.getY() - player.getCenterY())); if (angle < 0) { angle += 360

有个球员。移动光标时,我想得到播放器和光标之间的角度。我的代码是:

public void mouseMoved(MouseEvent ev) {
    float angle = (float) Math.toDegrees(Math.atan2(ev.getX() - player.getCenterX(),
            ev.getY() - player.getCenterY()));
    if (angle < 0) {
        angle += 360;
    }
    System.out.println(angle);
}
public void mouseMoved(MouseEvent ev){
浮动角度=(浮动)数学到角度(数学atan2(ev.getX()-player.getCenterX(),
ev.getY()-player.getCenterY());
如果(角度<0){
角度+=360;
}
系统输出打印LN(角度);
}
但它不会返回正确的值。如何修改它以返回正确的值?

这对我很有用:

float angle = (float) Math.toDegrees(Math.atan2(-(ev.getX() - player.getCenterX()), ev.getY() - player.getCenterY()));
angle += 90;

你大概在说两个向量之间的角度,对吧?那么你的参考点在哪里?一个点是鼠标光标点,第二个点是玩家点。从这两个方面,我得到了协调。然后,为什么要使用
atan2
?从这两点,你可以得到一条线段。它有一个斜率,但没有角度,因为需要两条相交的直线/线段之间有一个角度。为什么使用float而不是double?为什么不按照杰克·曼尼的建议使用阿科司呢?因为他使用了float,并在杰克·曼尼发布他的答案时写下了我的答案。我自己制作游戏时也使用了类似的代码^_^