在 LWJGL 中基于 x 轴和 y 轴查找角度时出错

Error with finding angles based off x and y axis in LWJGL

我正在用 LWJGL 编写一个程序,我制作了一个带双精度的基本 x 和 y 轴,我尝试制作一个函数来计算鼠标(黑框)相对于用户(灰框)的角度).它工作得很好,但由于某种原因,角度只能从 0 到 90 到 0 到负 90,然后回到 0。

http://imgur.com/a/n6Bm7#0

这是一张 imgur 相册来说明我的问题

这是我的函数代码

public double calcAngle(double x, double y) {
        //double DEG2RAD = 0.0174532925;
        double RAD2DEG = 57.2957795;
        double h = Math.pow(x, 2) + Math.pow(y, 2);
        h = Math.pow(h, 0.5);
        double z = y / h;
        z = Math.asin(z);
        z = z * RAD2DEG;
        return z;
    }

这里的问题是 Math.asin returns -90 < x < 90 (http://docs.oracle.com/javase/8/docs/api/java/lang/Math.html)

之间的值

要解决这个问题,您可以添加一些逻辑来查看 x 坐标是否为负数。如果 x 为负数,您必须执行 "return 180 - z" 而不仅仅是 "return z"

这将为您提供 -90 < x < 270 的角度范围。