Javascript 以鼠标移动的度数计算角度

Javascript 以鼠标移动的度数计算角度,javascript,html,math,geometry,Javascript,Html,Math,Geometry,我想计算鼠标移动的角度,以度为单位。虽然我知道你不必在直线上移动鼠标,但我只是试着根据起点和终点来计算它,以创建一个好的直角 log(“角度:+getAngle(x1,y1,x2,y2))给出了奇怪的结果: ANGLE: 0.24035975832980774 mouse has stopped ANGLE: 1.334887709726425 mouse has stopped ANGLE: 0.2722859857950508 mouse has stopped ANGLE: 0.371

我想计算鼠标移动的角度,以度为单位。虽然我知道你不必在直线上移动鼠标,但我只是试着根据起点和终点来计算它,以创建一个好的直角

log(“角度:+getAngle(x1,y1,x2,y2))给出了奇怪的结果:

ANGLE: 0.24035975832980774 
mouse has stopped
ANGLE: 1.334887709726425 
mouse has stopped
ANGLE: 0.2722859857950508
mouse has stopped
ANGLE: 0.3715485780567732
mouse has stopped
代码:

Math.asin()
函数返回以弧度为单位的角度。如果你乘以
180/pi
,你将得到以度为单位的答案


此外,由于您需要90度以上的角度,因此应该放弃
Math.abs
调用,以便可以为aSin设置负值。

您的计算似乎是正确的,但问题是
Math.aSin(val)
返回以弧度为单位的值。使用以下功能转换为度:

Math.degrees = function(radians) {
    return radians*(180/Math.PI);
}

然后调用
Math.degrees(Math.asin(val))
它应该可以工作

使用atan2函数获取整圈的角度

radians = Math.atan2(y2-y1,x2-x1);

此外,您可能希望在计算时记录x1、x2、y1、y2的值,最好只在一个位置跟踪鼠标位置。目前,您每10毫秒更新一次位置(x2、y2、t2),但每次移动鼠标时更新(x1、y1、t1)。这可能会导致非常不可预测的样本组合。

Ah-oops。你能告诉我为什么弧度乘以180/PI得到度吗?这就是弧度对度的定义。哈哈,我应该查一下的。最后一件事,我注意到,当我绕着圆圈移动时,它总是以
90
的形式给出度。例:从原点移动到右上象限可以得到0到90度的范围。从原点移动到右下象限,我希望角度在270-360之间。如何解决这个问题?因为您使用的是距离的绝对值,所以您取消了方向。试着不用Math.abs,看看它是否能正常工作。它只会给学位增加负面影响。
radians = Math.atan2(y2-y1,x2-x1);