目录
点和向量,坐标系
只有当我们指定这个三维空间中的某个坐标系时, 才可以谈论该向量在此坐标系下的坐标,也就是找到若干个实数对应这个向量。如果我们确定一个坐标系,也就是一个线性空间的基
内积可以描述向量间的投影关系。对于
,内积可以写成:
外积可以写成:
其中,
表示
的反对称矩阵。
坐标系间的欧氏变换
相机运动是一个刚体运动,它保证了同一个向量在各个坐标系下的长度和夹角都不会 发生变化。这种变换称为
欧氏变换
。
旋转矩阵
的推导:
设某个单位正交基
经过一次旋转,变成了
。那么,对于同一个向量
(注意该向量并没有 随着坐标系的旋转而发生运动),它在两个坐标系下的坐标为
和
。 根据坐标的定义,有:
对上面等式左右同时左乘
,那么左边的系数变成了单位矩阵:
矩阵
描述了旋转本身。因此它又称为
旋转矩阵
。
旋转矩阵的性质
事实上,它是一个行列式为
1 的正交矩阵
。反之,行列式为
1
的正交矩阵也可以是一个旋转矩阵。所以,可以把旋转矩阵的集合定义如下:
旋转矩阵可以描述相机的旋转。由于旋转矩阵为正交阵,
它的逆(即转置)描述了一个相反的旋转。按照上面的定义方式,有:
欧氏空间的坐标变换
考虑世界坐标系中的向量
,经过一次 旋转(用
描述)和一次平移
后,得到了
,那么把旋转和平移合到一起,有:
变换矩阵与齐次坐标
假设进行了两次变换:
则:
因此,要引入齐次坐标和变换矩阵重写式:
对于这个四维向量,我们可以把旋转和平移写在一个矩阵里面,使得整个关系变成了线性关系。该式中,矩阵
称为
变换矩阵(Transform Matrix)。我们暂时用
表 示
的齐次坐标。
依靠齐次坐标和变换矩阵,两次变换的累加就可以有很好的形式:
在不引起歧义的情况下,以后我们就直接把它写成
的样子,默认其中是齐次坐标了。
变换矩阵的性质
它具有比较特别的结构:左上角为旋转矩阵,右侧为平移向量,左 下角为
0
向量,右下角为
1
。这种矩阵又称为特殊欧氏群(
Special Euclidean Group
):
求解该矩阵的逆表示一个反向的变换:
旋转向量和欧拉角
旋转向量
矩阵表示方式的缺点
1.
的旋转矩阵有九个量,但一次旋转只有三个自由度。因此这种表达方式是冗余的。同理,变换矩阵用十六个量表达了六自由度的变换。
2.
旋转矩阵自身带有约束:它必须是个正交矩阵,且行列式为
1。变换矩阵也是如此。要估计或优化一个旋转矩阵
/
变换矩阵时,这些约束会使得求解变得更困难。
旋转向量的定义
任意旋转都可以用
一个旋转轴和一个旋转角来刻画。于是,可以使用一个向量,其方向与旋转轴一致,而长度等于旋转角。这种向量,称为
旋转向量
(或轴角,Axis-Angle
)。
假设有一个旋转轴为
,角度为
的旋转,显然,它对应的旋转向 量为
。
旋转向量和旋转矩阵之间的转换
由旋转向量到旋转矩阵的过程由
罗德里格斯公式
(
Rodrigues’s Formula
)表明:
其中,旋转轴
是矩阵
特征值1对应的特征向量。
反之,我们也可以计算从一个旋转矩 阵到旋转向量的转换:
则有:
欧拉角
它使用了
三个分离的转角,把一个旋转分解成三次绕不同轴的旋转。欧拉角当中比较常用的一种,便是用“偏航-俯仰-滚转”(yaw-pitch-roll)三个角度来描述一个旋转的。
1.
绕物体的
Z
轴旋转,得到偏航角
yaw
;
2.
绕
旋转之后
的
Y
轴旋转,得到俯仰角
pitch
;
3.
绕
旋转之后
的
X
轴旋转,得到滚转角
roll
。
欧拉角的一个重大缺点是会碰到著名的
万向锁问题(Gimbal Lock):在俯仰角为
时,第一次旋转与第三次旋转将使用同一个轴,
使得系统丢失了一个自由度(由三次旋转变成了两次旋转)。这被称为奇异性问题,在其他形式的欧拉角中也同样存在。
![](https://img-blog.csdnimg.cn/direct/1725e865568641a99e53a7f183a6f454.png)
四元数
旋转矩阵用九个量描述三自由度的旋转,具有冗余性;欧拉角和旋转向量是紧凑的,但具有奇异性。四元数是 Hamilton 找到的一种扩展的复数。
它既是紧凑的,也没有奇异性。如果说缺点的话,四元数不够直观,其运算稍为复杂一些。
四元数的形式
一个四元数
拥有一个实部和三个虚部:
其中
为四元数的三个虚部。这三个虚部满足关系式:
也用一个标量(四元数的实部)和一个向量(四元数的虚部)来表达四元数:
四元数与旋转
在三维情况下,任意一个旋转都可以用单位四元数来描述,乘 就是绕
轴旋转180°。
假设某个旋转是绕单位向量
,进行了角度为
的旋转,那么这个旋转的四元数形式为:
从单位四元数中计算出对应旋转轴与夹角:
把三维空间点用一个虚四元数来描述:
用四元数
表示这个旋转:
那么,旋转后的点即可表示为这样的乘积: