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,并在杰克·曼尼发布他的答案时写下了我的答案。我自己制作游戏时也使用了类似的代码^_^