四元数和旋转矩阵的相互推导过程

来源:互联网 发布:python中 编辑:程序博客网 时间:2024/06/10 21:14

每一个单位四元数都可以对应到一个旋转矩阵

单位四元数q=(s,V)的共轭为q*=(s,-V)

单位四元数的模为||q||=1;

四元数q=(s,V)的逆q^(-1)=q*/(||q||)=q*

一个向量r,沿着向量n旋转a角度之后的向量是哪个(假设为v),这个用四元数可以轻松搞定

构造两个四元数q=(cos(a/2),sin(a/2)*n),p=(0,r)

p`=q * p * q^(-1)这个可以保证求出来的p`也是(0,r`)形式的,求出的r`就是r旋转后的向量

另外其实对p做q * p * q^(-1)操作就是相当于对p乘了一个旋转矩阵,这里先假设q=(cos(a/2),sin(a/2)*n)=(s,(x, y, z))


两个四元数相乘也表示一个旋转
 Q1 * Q2 表示先以Q2旋转,再以Q1旋转

则这个矩阵为

同理一个旋转矩阵也可以转换为一个四元数,即给你一个旋转矩阵可以求出(s,x,y,z)这个四元数,

方法是:

原创粉丝点击