• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

四元数怎么计算出木欧拉角

yhj416606438 2021-02-18 浏览量:297
请问怎么计算欧拉角,还有kp和ki两个参数调节了还有什么影响
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可以参考下面的代码,会实现你说的功能。

    #define _USE_MATH_DEFINES
    #include <cmath>
     
    struct Quaternion {
        double w x y z;
    };
     
    struct EulerAngles {
        double roll pitch yaw;
    };
     
    EulerAngles ToEulerAngles(Quaternion q) {
        EulerAngles angles;
     
        // roll (x-axis rotation)
        double sinr_cosp = 2 * (q.w * q.x + q.y * q.z);
        double cosr_cosp = 1 - 2 * (q.x * q.x + q.y * q.y);
        angles.roll = std::atan2(sinr_cosp cosr_cosp);
     
        // pitch (y-axis rotation)
        double sinp = 2 * (q.w * q.y - q.z * q.x);
        if (std::abs(sinp) >= 1)
            angles.pitch = std::copysign(M_PI / 2 sinp); // use 90 degrees if out of range
        else
            angles.pitch = std::asin(sinp);
     
        // yaw (z-axis rotation)
        double siny_cosp = 2 * (q.w * q.z + q.x * q.y);
        double cosy_cosp = 1 - 2 * (q.y * q.y + q.z * q.z);
        angles.yaw = std::atan2(siny_cosp cosy_cosp);
     
        return angles;
    }

    • 发布于 2021-02-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:0

相关问题

问题达人换一批

四元数怎么计算出木欧拉角