javascript - 如何将向量转换为欧拉 Angular

标签 javascript vector trigonometry angle euler-angles

我在网上搜索了近三个小时,试图找到我的问题的答案。我已阅读articles并观看了很多videos展示了如何获取矢量的 Angular (以度或弧度为单位)。但这并不是我正在寻找的。

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

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

我不知道这是否会改变任何东西,但负输出也是可以接受的。例如,相应的可接受输出不是 270,而是 -90。

最佳答案

由于逆时针与 x 轴的 Angular 是 y/x 的反正切,因此您只需要得到以度为单位的结果,将其增加 270,将 Angular 域保持在 [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;
}

关于javascript - 如何将向量转换为欧拉 Angular ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785696/

相关文章:

Javascript 和 Ruby on Rails

javascript - AJAX 请求填充弹出窗口,仅对 php 文件运行一次

c++ - 如何将 bool vector memcpy 到 char 数组?

c++ - std::vector 中止问题

java - 如何根据鼠标坐标(JavaFX)沿着围绕固定中心的圆形轨道定位节点?

c++ - 矩形边界内的旋转线

javascript - 三 Angular 问题,三 Angular 形绕圆的不稳定运动

javascript - 我可以使用 node-gm 调整内存中图像的大小还是需要先保存它?

javascript数组找到最长的,如果超过目前的,则首先找到ID

c++ - 在循环中创建线程 vector 的问题