理解四元数,首先要认识欧拉角,欧拉角是在复平面的单位圆中定义的.
e^iθ=cos(θ)+isin(θ) 其中i为复数
θ为实数轴正向开始,逆时针旋转的角度
而对于单位四元数
i^2 = j^2 = k^2 = -1 其中i,j,k都为复数
对于一个任意单位四元数,注意以下讨论的四元数都是单位四元数,因为即使四元数非单位长度,长度也会被左右乘给无视掉.
q = w + xi + yj + zk = cos(θ/2) + sin(θ/2)(xi + yj + zk) 其中i,j,k都为复数
形式和欧拉角相似
而应用一个四元数旋转计算为: F(p) = qpq的逆 其中p是向量,q是四元数
对于任意一个单位四元数
旋转轴即为 normalize(Vector3(x,y,z)) 过物体空间原点的向量
旋转方向为逆时针
旋转角度可由 w = cos(θ/2) 计算得知
单位四元数表示的旋转都是以物体空间计算,绕过原点的向量方向为旋转轴,逆时针旋转θ角
四元数的矩阵形式:
单位四元数 q = w + xi + yj + zk 的3X3旋转矩阵
[ 1 - 2y^2 -2z^2 2xy - 2wz 2xz + 2wy ]
| 2xy + 2wz 1-2x^2-2z^2 2yz - 2wx |
[ 2xz - 2wy 2yz + 2wx 1-2x^2-2y^2 ]
单位四元数 q = w + xi + yj + zk 的4X4旋转矩阵
[ w -x -y -z ]
| x w z -y |
| y -z w x |
[ z y -x w ]
在应用四元数时注意公式:F(p) = qpq的逆 其中p是向量,q是四元数
而四元数的逆,可以根据公式:四元数的逆 = 四元数的共轭 / 四元数模的平方
单位四元数 q = w + xi + yj + zk 的共轭 = q = w - xi - yj - zk
四元数模的平方 = w^2 + x^2 + y^2 + z^2
四元数乘法
四元数q1乘四元数q2 = w1w2 - v1内积v2 + w1v2 + w2v1 + v1叉积v2
其中v1和v2分别为四元数q1和q2的虚部向量
四元数可视化网站: