下面演示用MATLAB演示用四元数计算旋转:
假设三维点[1,0,0]绕轴旋转180°变为[-1,0,0];
接下来用四元数求解旋转后的点;
根据上述条件:
设三维点[1,0,0]用四元数表示为p[0,1,0,0];
旋转向量为[0,0,1],旋转角度为180°,由此由旋转向量转四元数q2为[0,0,0,1];
根据下面公式,并采用MTALAB计算旋转后向量代码如下:
clear all
q = [0,1,0,0]; % 初始点转四元数
q1 = [0,-1,0,0]; % 绕z轴旋转180度后四元数
q2 = [0,0,0,1]; % 旋转向量转四元数
dq = quatmultiply(q2,q); % 计算q2*q
q3 = quatinv(q2); % 求四元数的逆
quatmultiply(dq,q3) % 结果为[0,-1,0,0]和q1相等验证公式
下面附带MATLAB四元数计算函数:
quatconj(q): 求共轭四元数;quatconj(q) = [1,0,1,0]
quatdivide(q,r): 求取两个四元数除法;q/r;
quatmultiply(q,r): 求取两个四元数乘法;
quatinv(q): 求取四元数导数;
quatexp(q): 求四元数指数;
quatpower(q): 求四元数幂;
quatlog(q): 求四元数自然对数;
quatrotate(q): 按四元数旋转矢量;
quatnorm(q): 计算四元数的范数
quatmod(q):计算四元数模量