- 四元数
- 四元数特点
- 四元数组合
- 四元数叉乘
- 四元数和点
四元数
四元数特点
1、四元数数据量小,只有四个元素2、四元数可以利用向量叉乘来计算,省去了矩阵乘法计算3、他会一直保持向量的维度是4维
四元数组合
[ w, (x, y, z) ][ w, v ]w是实数, v是三个虚数的组合计算四元数的四个分量存储着轴角对 v(x, y, z), thetax = v.x * sin(theta/2)y = v.y * sin(theta/2)z = v.z * sin(theta/2)w = cos(theta/2)
四元数叉乘
叉乘后还是四元数叉乘满足结合律,但不满足交换律.q1 = [v1, w1]q2 = [v2, w2]q1 x q2 = [(v1 * w2 + v2 * w1 + Cross<v1, v2>), (w1 * w2 - Dot<v1, v2>)]参照复数四则运算使我们的虚数部分变成负数:就是共轭q* = [w, (-x, -y, -z)]求模|p| = sqrt( a*a + b*b );|q| = sqrt( pow(cos(a/2), 2) + pow(sin(a/2), 2) )求逆q^-1 = q* / |q|如果我们使用单位四元数是单位四元数那么就可以得到 q^-1 = q*. 所以单位四元数的共轨等于他的逆将逆和向量叉乘得到我们四元数旋转后的新坐标点注意事项四元数也是线性的,千万不能同时旋转
四元数和点
把一个标准3D点(x,y,z)扩展到四元数空间: P = [0, (x,y,z)]即可,一般情况下它不会是单位四元数设Q为旋转四元数Q=[cos(theta/2),nsin(theta/2)],n为单位向量,theta为旋转角度,那么P绕n旋转theta度就是:P` = Q * P * Q^-1
?
