两点之间角度的数学计算Java

时间:2017-10-04 09:51:33

标签: java opengl

我正在尝试使用lwjgl和opengl计算我的鼠标和'player'Im之间的角度。这是旋转图像的用途:

GL11.glTranslatef(p.getPosition().x+playerTexture.getTextureWidth()/2, p.getPosition().y+playerTexture.getTextureHeight()/2, 0);
GL11.glRotated(0, 0.0f, 0.0f, 1.0f);
GL11.glTranslatef(-p.getPosition().x+-playerTexture.getTextureWidth()/2, -p.getPosition().y+-playerTexture.getTextureHeight()/2, 0);`

我尝试了两件事,但每次只是不停地旋转图像。我的尝试:

public float getAngle(Player p) {
    float angle = (float) (Math.atan2(Mouse.getY() - 
    p.getPosition().y+playerTexture.getTextureHeight()/2 , Mouse.getX() - 
    p.getPosition().x+playerTexture.getTextureWidth()/2));
    return angle;
}

public void calcAngle(Player p){
    double y = Mouse.getY() - p.getPosition().y;
    double x = Mouse.getX() - p.getPosition().x;
    double dir = Math.atan2(y, x);
}

我希望有人知道解决这个问题。感谢。

1 个答案:

答案 0 :(得分:0)

我无法看到您实际使用getAngle方法的位置,但我怀疑您在openGL旋转功能中直接使用Math.atan2计算的角度?

如果是这样的话,我猜你会混淆单位。我相信Math.atan2会返回弧度,而openGL则需要度数。尝试使用Math.toDegrees(angle)

然而,我希望这能显示出非常微小的角度,而不是疯狂地旋转......

我要做的第一件事就是将角度写入控制台。是0,90,180等,还是0,1.723,3.1431等?