四元数 quaternion

3D旋转公式


Rodrigues's Rotation Formula 3D旋转公式
$v^{‘} = cos(\theta)v + ( 1 - cos(\theta))(u\cdot v)u + sin(\theta)(u\times v)$

四元数

四元数与复数十分类似, 不同之处为四元数有3个虚部而复数只有1个虚部
所有四元数$q \in H, q = a + bi + cj + dk, i^2 + j^2 = k^2 = ijk = -1$

向量形式

或者将四元数的实部与虚部分开表示

四元数运算

加减法/与标量乘法类比向量

乘法不支持交换律

Graßmann Product

$q_1 = [s, v] , q_2 = [t, u]$
$q_1q_2 = [st - v\cdot u, su + tv + v\times u]$

共轭

$q^* = [s, -v]$
$qq^* = q^*q = ||q||^2$
满足交换律

四元数的逆

定义$qq^{-1} = 1$
同时左乘$q^*$得$q^*qq^{-1} = q^*$
$||q||^2q^{-1} = q^*$
$q^{-1} = \frac{q^*}{||q||^2}$

用四元数表示旋转

设三维点$p = [x, y, z]$, 进行由轴角$n, \theta$指定的旋转,旋转之后得到的点为$p^r$

首先将$p$用四元数$ [0, x, y, z]$表示, 用四元数$q = [cos\frac{\theta}{2}, nsin\frac{\theta}{2}]$表示旋转

则 $p^r = q p q^{-1}$

表示旋转的方式

  • 四元数(opencv中用以表现旋转)
  • 轴角 $n \theta$
  • 旋转矩阵

万向节锁


参考链接