在 LWJGL 中基于 x 轴和 y 轴查找角度时出错
Error with finding angles based off x and y axis in LWJGL
我正在用 LWJGL 编写一个程序,我制作了一个带双精度的基本 x 和 y 轴,我尝试制作一个函数来计算鼠标(黑框)相对于用户(灰框)的角度).它工作得很好,但由于某种原因,角度只能从 0 到 90 到 0 到负 90,然后回到 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 的角度范围。
我正在用 LWJGL 编写一个程序,我制作了一个带双精度的基本 x 和 y 轴,我尝试制作一个函数来计算鼠标(黑框)相对于用户(灰框)的角度).它工作得很好,但由于某种原因,角度只能从 0 到 90 到 0 到负 90,然后回到 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 的角度范围。