Javascript 计算两个向量之间的角度返回值,单位为0到360度之间的度

Javascript 计算两个向量之间的角度返回值,单位为0到360度之间的度,javascript,vector,angle,degrees,Javascript,Vector,Angle,Degrees,嘿,我有以下代码来计算角度(以度为单位): var angleDeg = Math.atan2(mouse.y - base.y, mouse.x - base.x) * 180 / Math.PI; console.log(angleDeg); 但是现在我得到的角度是0到180度,正的和负的。右侧为0度时,请参见图。但是我希望返回的角度在0到360之间,都是正的。顶部为0度。参见图 如何更新我的函数以使其正常工作?我用javascript写这个。 最后,我希望角度值在图像中以粉红色返回。非

嘿,我有以下代码来计算角度(以度为单位):

var angleDeg = Math.atan2(mouse.y - base.y, mouse.x - base.x) * 180 / Math.PI;
console.log(angleDeg);
但是现在我得到的角度是0到180度,正的和负的。右侧为0度时,请参见图。但是我希望返回的角度在0到360之间,都是正的。顶部为0度。参见图

如何更新我的函数以使其正常工作?我用javascript写这个。 最后,我希望角度值在图像中以粉红色返回。非常感谢您的帮助

希望这是明确的,如果没有请让我知道,这样我可以更新我的问题

您需要将鼠标.x和鼠标.y坐标“旋转”约90°(=用-x,y交换y,x)并添加180°(=
Math.PI
):

let base={x:100,y:100};
document.addEventListener('mousemove',event=>{
让angle=Math.PI+Math.atan2(-event.x+base.x,event.y-base.y);
console.log(角度*180/Math.PI);
});

x
如果你将你拥有的值和你期望的值绘制成一张图表,那么这是最容易计算的

拥有->想要

-180->270

-90->0

0->90

90->180

180->270

我们发现这可以分为两种情况:

[-180,-90)

[-90180]

案例1

[-180,-90)->[270,360)

规则就是
+450

案例2

[-90180]->[0270]

这只不过是
+90

所以我们得到了我们的代码

sanitize(angle){ // expecting angle within [-180, 180]
    if(angle < -90){
        return angle + 450;
    } else {
        return angle + 90;
    }
}
sanitize(角度){//期望角度在[-180,180]以内
如果(角度<-90){
返回角+450;
}否则{
返回角+90;
}
}