如何将向量转换为欧拉角

How to convert a vector to a euler angle

我在网上搜索了将近三个小时,试图找到我的问题的答案。我已阅读 articles and watched many videos,它展示了如何以度数或弧度获取向量的角度。但这并不是我要找的。

我怀疑我可能不知道正确的词来描述我想做的事情,所以我决定画出来。

本质上,我正在尝试编写一个简单的函数,它将二维向量作为输入(在我的示例中为 [3,1])和 returns 我认为称为欧拉角的东西。在我的示例中,输出大约为 290。矢量可以具有负坐标,例如 [-3, -1] 将输出大约 110。

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

由于 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;
}