理解四元数轴角

Understand Quaternions axis angle

我正在使用 Madgwick 算法,它为我提供了加速度计和陀螺仪的四元数。 所以我可以用这个公式从 q0 得到角度 2 * acors(q0) 它是我试过的作品,我得到了很好的价值。但是现在我不明白我怎么知道 x 或 y 已经旋转到 x° 因为我只有一个角度与四元数。

例如,假设我有这个四元数 q0 到 q3 {0,71, 0,18, -0,65, 0.30},所以当 q0 等于 0.71 时,我的角度为 90°。但是在我的例子中 x 和 y 是不同的,所以我怎么知道 x 是 90° 和 y 是 20° 例如,是否可以不使用欧拉角? 我已经为 x q1/sin(angle/2) 尝试了这个公式,但结果并没有说服我....

如果你有四元数(u是单位向量,旋转轴的方向向量)

(cos(a/2), u * sin(a/2))

并想知道矢量 V 如何用这个四元数 (in the end of Rotation Identity section)

进行变换
V' = Vperp*cos(a) + (u x Vperp) * sin(a) + Vpara

其中 VperpVpara 是矢量 V 垂直和平行于矢量 u

Vpara = u * (u.dot.V)
Vperp = V - Vpara

示例:

let rotation axis (u) is (0.707, 0.707, 0), we want to know how 
OX-aligned vector (1,0,0) will look after rotation by 180 degrees

Vpara = (0.707, 0.707, 0) * (0.707*1 + 0.707*0 + 0) = (0.5, 0.5, 0)
Vperp = (1, 0, 0) - (0.5, 0.5, 0) = (0.5, -0.5, 0)
V' = (0.5, -0.5, 0) * -1  + (u x Vperp) * 0 + (0.5, 0.5, 0) = (0, 1, 0)

(OX 变成 OY)