gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:05:01 25 4
gpt4 key购买 nike

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

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

我希望有人知道解决这个问题的方法。谢谢。

最佳答案

我看不到您实际上在哪里使用 getAngle 方法,但我怀疑您直接在 openGL 旋转函数中使用从 Math.atan2 计算出的角度?

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

但是,我希望它能显示出非常小的角度,而不是疯狂旋转......

要解决这个问题,我要做的第一件事是将角度写入控制台。是 0、90、180 等,还是 0、1.723、3.1431 等?

关于java - Java 两点之间角度的数学计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46561879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com