我正在用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;
}
答案 0 :(得分:0)
这里的问题是Math.asin返回介于-90<之间的值。 x< 90(http://docs.oracle.com/javase/8/docs/api/java/lang/Math.html)
要解决此问题,您可以添加一些逻辑来查看x坐标是否为负数。如果是负x,则必须执行“返回180 - z”而不是“返回z”
这会给你一个-90°的角度范围。 x< 270。