四元数、欧拉角及方向余弦矩阵的相互转换公式
2016-11-27 21:21
417 查看
四元数、欧拉角及方向余弦矩阵的相互转换公式
一、欧拉角转四元数(常用来初始化四元数)
按Z-Y-X的旋转变换顺序有:
二、四元数与旋转矩阵(常用来作坐标变换)
1.b系到R系的坐标变换矩阵
2.R系至b系的坐标变换矩阵公式
详情:http://blog.csdn.net/u012763833/article/details/52583350
三、欧拉角转方向余弦矩阵
由以上两式可得,经三次基本旋转对应的坐标变换为:
从上述方向余弦矩阵中可方便提取欧拉角
四、四元数转欧拉角
五、附C程序
void eulerAnglesToQuaternion(void) { cosRoll = cosf(roll * 0.5f); sinRoll = sinf(roll * 0.5f); cosPitch = cosf(pitch * 0.5f); sinPitch = sinf(pitch * 0.5f); cosHeading = cosf(hdg * 0.5f); sinHeading = sinf(hdg * 0.5f); q0 = cosRoll * cosPitch * cosHeading + sinRoll * sinPitch * sinHeading; q1 = sinRoll * cosPitch * cosHeading - cosRoll * sinPitch * sinHeading; q2 = cosRoll * sinPitch * cosHeading + sinRoll * cosPitch * sinHeading; q3 = cosRoll * cosPitch * sinHeading - sinRoll * sinPitch * cosHeading; } void quaternionToRotationMatrix(void) { float q1q1 = sq(q1); float q2q2 = sq(q2); float q3q3 = sq(q3); float q0q1 = q0 * q1; float q0q2 = q0 * q2; float q0q3 = q0 * q3; float q1q2 = q1 * q2; float q1q3 = q1 * q3; float q2q3 = q2 * q3; rMat[0][0] = 1.0f - 2.0f * q2q2 - 2.0f * q3q3; rMat[0][1] = 2.0f * (q1q2 + -q0q3); rMat[0][2] = 2.0f * (q1q3 - -q0q2); rMat[1][0] = 2.0f * (q1q2 - -q0q3); rMat[1][1] = 1.0f - 2.0f * q1q1 - 2.0f * q3q3; rMat[1][2] = 2.0f * (q2q3 + -q0q1); rMat[2][0] = 2.0f * (q1q3 + -q0q2); rMat[2][1] = 2.0f * (q2q3 - -q0q1); rMat[2][2] = 1.0f - 2.0f * q1q1 - 2.0f * q2q2; } void quaternionToEulerAngles(void) { roll = atan2f(2.f * (q2q3 + q0q1), q0q0 - q1q1 - q2q2 + q3q3); pitch = asinf(2.f * (q0q2 - q1q3)); yaw = atan2f(2.f * (q1q2 + q0q3), q0q0 + q1q1 - q2q2 - q3q3); }
相关文章推荐
- 四元数、欧拉角及方向余弦矩阵的相互转换公式
- 四元数、欧拉角及方向余弦矩阵的相互转换公式
- 三维空间 旋转矩阵 四元数 欧拉角 相互转换 组合旋转
- 3D数学基础公式------>矩阵,欧拉角,四元数,之间转换<2>
- 四元数,欧拉角,矩阵的相互转换
- Eigen库使用教程之旋转矩阵,旋转向量和四元数的初始化和相互转换的实现
- Eigen库中( 旋转矩阵,变换矩阵,轴向量,欧拉角,四元数) 表示及转换
- Unity 四元数与欧拉角的相互转换及推导
- 欧拉角和旋转矩阵相互转换
- 坐标系转换之三:欧拉角、四元数、旋转矩阵、方向余弦矩阵、旋转向量、轴角表示
- 四元数、欧拉角、方向余弦矩阵
- 旋转矩阵、四元数和欧拉角之间的转换——Matlab
- 旋转矩阵、欧拉角、四元数、轴/角之间的转换
- 四元数、欧拉角、旋转矩阵之间互相转换C++源码
- 欧拉角、四元数和方向余弦的转换关系
- CSharpGL(32)矩阵与四元数与角度旋转轴的相互转换
- Eigen中欧拉角,旋转向量,旋转矩阵,四元数的转换
- Eigen库使用教程之旋转矩阵,旋转向量和四元数的初始化和相互转换的实现
- math: 四元数与欧拉角(RPY角)的相互转换
- 四元数、欧拉角、旋转矩阵之间互相转换C++源码