我已经在网上搜了差不多三个小时,试图找到我问题的答案。我已阅读articles并观看了许多videos,其中显示了如何获得以度或弧度为单位的矢量角度。但这并不是我正在寻找的。 p>
我怀疑我可能不知道正确的词语来描述我想要做的事情,所以我决定画画。
本质上,我正在尝试编写一个简单的函数,它将2D矢量作为输入(在我的例子中为[3,1])并返回我认为称为欧拉角的函数。在我的例子中,输出大约是290.矢量可以有负坐标,例如[-3,-1]将输出大约110.
我不知道这是否会改变,但负输出也是可以接受的。例如,代替270,-90将是相应的可接受输出。
答案 0 :(得分:1)
由于x轴逆时针的角度是y/x
的反正切,你只需要得到度数的结果,将它增加270,保持[0,360]中的角度域如下:
function euler_angle(x,y) {
var rad = Math.atan(y/x); // arcus tangent in radians
var deg = rad*180/Math.PI; // converted to degrees
if (x<0) deg += 180; // fixed mirrored angle of arctan
var eul = (270+deg)%360; // folded to [0,360) domain
return eul;
}