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$
- 旋转矩阵