四元数
1、关于四元数(摘自百度百科)
定义
四元数是简单的超复数。 复数是由实数加上虚数单位 i 组成,其中i^2 = -1。 相似地,四元数都是由实数加上三个虚数单位 i、j、k 组成,而且它们有如下的关系: i^2 = j^2 = k^2 = -1, i^0 = j^0 = k^0 = 1 , 每个四元数都是 1、i、j 和 k 的线性组合,即是四元数一般可表示为a + bi+ cj + dk,其中a、b、c 、d是实数。
基本性质
四元数就是形如 ai+bj+ck+d 的数,a、b、c、d是实数。
i^2=j^2=k^2=-1
ij=k、ji=-k、jk=i、kj=-i、ki=j、ik=-j
(a^2+b^2+c^2+d^2)的平方根,称为四元数的模。
2、用途
四元数常用来作为旋转使用,相关的还有欧拉角等旋转表示。
我们用(w,x,y,z)来表示一个四元数,也可以写成(w,v),其中w是标量(旋转的角度),v是矢量(旋转的轴,是有方向的),例如下图:
,w是60度。
旋转的方向:右手大拇指指向轴的正方向,四指的方向就是旋转的正方向。
3、旋转的用法
假如我们有一个向量(0,0,1),绕(1,0 ,0)旋转180度,解法如下:
1、把旋转轴和角度变成四元数:
这里vx=1,vy=0,vz=0,theta=180
q = (0,1,0,0)
这里顺便把q^-1求出来:
q^-1 = q* / (||q||)
---->(共轭四元数除以他的模,因为我们这里用的是(1,0,0)所以q^-1和共轭相等)
q^1 = (0,-1,0,0)
2、把要旋转的向量转换为纯四元数
纯四元数:(0,x,y,z)
在这里(0,0,1)变换为:qw(0,0,0,1)
3、做四元数乘法,进行旋转:
qw' = q * qw * q^-1 = (0,wx',wy',wz')
那么(wx',wy',wz')就是旋转以后的三维空间向量。
四元数的乘法规则如下:
4、进行多次旋转
qw' = q3 * q2 * q1 * qw * q1^-1 * q2^-1 * q3^-1
顺序不可以改变
本题解题过程是:
q = (0,1,0,0) ----->旋转变为四元数
q^-1 = (0,-1,0,0)
qw = (0,0,0,1) ----->(0,0,1)变为纯四元数
qw' = (0,1,0,0) * (0,0,0,1)*(0,-1,0,0)
= (0,0,-1,0) (0,-1,0,0)
= (0,0,0,-1)
最后qw'就是(0,0,-1)
物理描述:z轴正方向的单位向量,绕x轴正方向旋转180度,得到了z轴负方向的单位向量