如何将矢量转换为欧拉角

时间:2017-12-13 04:52:27

标签: javascript vector trigonometry angle euler-angles

我已经在网上搜了差不多三个小时,试图找到我问题的答案。我已阅读articles并观看了许多videos,其中显示了如何获得以度或弧度为单位的矢量角度。但这并不是我正在寻找的。

我怀疑我可能不知道正确的词语来描述我想要做的事情,所以我决定画画。 enter image description here

本质上,我正在尝试编写一个简单的函数,它将2D矢量作为输入(在我的例子中为[3,1])并返回我认为称为欧拉角的函数。在我的例子中,输出大约是290.矢量可以有负坐标,例如[-3,-1]将输出大约110.

我不知道这是否会改变,但负输出也是可以接受的。例如,代替270,-90将是相应的可接受输出。

1 个答案:

答案 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;
}