【问题标题】:Get angle between 2 points [duplicate]获取2点之间的角度[重复]
【发布时间】:2013-03-09 22:16:20
【问题描述】:

有一个球员。在移动光标时,我想获得玩家和光标之间的角度。我的代码是:

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);
}

但它不会返回正确的值。如何修改它以返回正确的值?

【问题讨论】:

  • 你说的大概是两个向量的夹角吧?
  • 那么你的参考点在哪里?
  • 一个点是鼠标光标点,第二个是玩家点。从两者我得到坐标
  • 从这两点,你得到一个线段。它有一个斜率,但没有一个角度,因为您需要两条相交的线/线段才能在它们之间形成一个角度。

标签: java angle


【解决方案1】:

这对我有用:

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

【讨论】:

  • 为什么使用浮点数而不是双精度数?为什么不按照 Jack Maney 的建议使用 arccos?
  • 因为他使用 float 并在 Jack Maney 发布的时候写下了我的答案。我也使用了类似的代码,因为我自己制作游戏^_^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多