• 四元数
    • 四元数特点
    • 四元数组合
    • 四元数叉乘
    • 四元数和点

    四元数

    四元数特点

    1. 1、四元数数据量小,只有四个元素
    2. 2、四元数可以利用向量叉乘来计算,省去了矩阵乘法计算
    3. 3、他会一直保持向量的维度是4

    四元数组合

    1. [ w, (x, y, z) ]
    2. [ w, v ]
    3. w是实数, v是三个虚数的组合
    4. 计算
    5. 四元数的四个分量存储着轴角对 v(x, y, z), theta
    6. x = v.x * sin(theta/2)
    7. y = v.y * sin(theta/2)
    8. z = v.z * sin(theta/2)
    9. w = cos(theta/2)

    四元数叉乘

    1. 叉乘后还是四元数
    2. 叉乘满足结合律,但不满足交换律.
    3. q1 = [v1, w1]
    4. q2 = [v2, w2]
    5. q1 x q2 = [(v1 * w2 + v2 * w1 + Cross<v1, v2>), (w1 * w2 - Dot<v1, v2>)]
    6. 参照复数四则运算
    7. 使我们的虚数部分变成负数:就是共轭
    8. q w, (-x, -y, -z)]
    9. 求模
    10. |p| = sqrt( a*a + b*b );
    11. |q| = sqrt( pow(cos(a/2), 2) + pow(sin(a/2), 2) )
    12. 求逆
    13. q^-1 = q* / |q|
    14. 如果我们使用单位四元数是单位四元数那么就可以得到 q^-1 = q*. 所以单位四元数的共轨等于他的逆
    15. 将逆和向量叉乘得到我们四元数旋转后的新坐标点
    16. 注意事项
    17. 四元数也是线性的,千万不能同时旋转

    四元数和点

    1. 把一个标准3D点(x,y,z)扩展到四元数空间: P = [0, (x,y,z)]即可,一般情况下它不会是单位四元数
    2. Q为旋转四元数Q=[cos(theta/2),nsin(theta/2)],n为单位向量,theta为旋转角度,那么Pn旋转theta度就是:
    3. P` = Q * P * Q^-1

    ?