如何通过四元数调整欧拉角

How to adjust euler angle by quaternion

我正在寻找一种方法来 return 计算已被四元数旋转的欧拉角。

我知道从四元数中提取俯仰滚转和偏航充其量是有问题的,但如果可以的话,我会简单地将它的值添加到我自己的值以获得最终的欧拉角。

我也可以将我的欧拉角转换为四元数,然后将两者结合起来,但我会留下一个无法转换为欧拉角的四元数。

我承认我在最好的时候都在与四元数作斗争,所以任何帮助都会受到欢迎。

为清楚起见,我只需要return一个欧拉角,如果需要,所有其他计算都可以用四元数完成。

我正在使用 Bullet Physics、Direct X、C++

谢谢。

  1. 不能直接将欧拉角与欧拉角或欧拉角与四元数组合。

  2. 您应该将旋转转换为允许变换合成的表示。它是旋转矩阵或四元数。

  3. 旋转组合后转换回欧拉角。

P.S。欧拉角根本不是旋转的有用表示。它只能用于手动输入旋转。

可以来回转换,但您需要遵守应用不同欧拉角的顺序,否则您会得到一些令人讨厌的结果。

我自己没有尝试过,正如所说,minorlogic 最好坚持旋转 matrix/quaternions。

这是一个不错的 link

https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles

其中 q0,q1,q2,q3 代表 w,x,y,z 在这个网站上,他们假设

其中飞机在滑行到跑道时先偏航,然后在起飞时俯仰,最后在空中翻滚。