旋转矩阵(英文:Rotation matrix)是在乘以一个
向量的时候有改变向量的方向但不改变大小的效果并保持了手性的矩阵。旋转矩阵不包括
点反演,点反演可以改变手性,也就是把右手坐标系改变成左手坐标系或反之,所有旋转加上反演形成了
正交矩阵的集合,旋转可分为主动旋转与被动旋转,主动旋转是指将向量逆时针围绕旋转轴所做出的旋转,被动旋转是对坐标轴本身进行的逆时针旋转,它相当于主动旋转的逆操作。
旋转矩阵具有保持向量大小不变、保持手性不变、应用于坐标变换和绕任意点旋转等特点。旋转矩阵是一种强大的数学工具,它在计算机图形学、机器人学、航空航天等领域有着广泛的应用。通过旋转矩阵,可以方便地进行复杂的空间变换和
动态模拟。
基本介绍
旋转矩阵的原理在数学上涉及到的是一种组合设计:覆盖设计。而覆盖设计,填装设计,斯坦纳系,t-设计都是
离散数学中的组合优化问题。它们解决的是如何组合集合中的元素以达到某种特定的要求。其最古老的数学命题是寇克曼女生问题:
某教员打算这样安排她班上的十五名女生散步:散步时三女生为一组,共五组。问能否在一周内每日安排一次散步,使得每两名女生在一周内一道散步恰好一次?寇克曼于1847年提出了该问题,过了100多年后,对于一般形式的寇克曼问题的存在性才彻底解决。用1~15这15个数字分别代表15个女生,其中的一组符合要求的分组方法是:
历史
Patric Ostergard
他的主要贡献是用了全新的模拟
退火算法解决了旋转矩阵的构造问题,运用他的模拟退火程序,可以很迅速的产生许许多多的旋转矩阵。
Alex Sidorenko
他研究出了许多旋转矩阵和几种产生旋转矩阵的基于秃岭浏览的一般方法。
Greg Kuperberg
他注意到线性的[v,t]编码的
补集可以给出区组长度不定的覆盖设计,而这可以产生对现有的旋转矩阵的一系列改进。
他收集的旋转矩阵是迄今为止最全面,最权威的。
性质
设 是任何维的一般旋转矩阵:
(1)两个
向量的
点积(内积)在它们都被一个旋转矩阵操作之后保持不变:
(3)一个矩阵是旋转矩阵,当且仅当它是
正交矩阵并且它的
行列式是单位一。正交矩阵的行列式是 ±1;如果行列式是 −1,则它包含了一个反射而不是真旋转矩阵。
(4)旋转矩阵是
正交矩阵,如果它的列向量形成的一个正交基,就是说在任何两个列向量之间的
点积是零(正交性)而每个列向量的大小是单位一(
单位向量)。
这里的指数是以
泰勒级数定义的而 是以
矩阵乘法定义的。A矩阵叫做旋转的“生成元”。旋转矩阵的李
代数是它的生成元的代数,它就是斜对称矩阵的代数。生成元可以通过 M 的
矩阵对数来找到。
二维空间
在二维空间中,旋转可以用一个单一的角 定义。作为约定,正角表示逆时针旋转。把
勒内·笛卡尔坐标的列向量关于原点逆时针旋转的矩阵是:
三维空间
在三维空间中,旋转矩阵有一个等于单位1的实特征值。旋转矩阵指定关于对应的特征向量的旋转(
欧拉旋转定理)。如果旋转角是 θ,则旋转矩阵的另外两个(
复数)特征值是。从而得出 3 维旋转的迹数等于,这可用来快速的计算任何 3 维旋转的旋转角。
3 维旋转矩阵的生成元是三维斜
对称矩阵。因为只需要三个
实数来指定 3 维斜对称矩阵,得出只用三个是实数就可以指定一个 3 维旋转矩阵。
旋转
生成旋转矩阵的一种简单方式是把它作为三个基本旋转的序列复合。关于右手
笛卡尔坐标系的x-,y- 和z-轴的旋转分别叫做
轧辊,pitch和yaw旋转。因为这些旋转被表达为关于一个轴的旋转,它们的生成元很容易表达。
绕x-轴的主动旋转定义为:
这里的是
轧辊 角,和右手
尾旋的方向相反(在yz平面顺时针)。
绕y-轴的主动旋转定义为:
这里的 是 pitch 角,和右手
尾旋的方向相反(在zx平面顺时针)。
绕z-轴的主动旋转定义为:
这里的是 yaw 角,和右手
尾旋的方向相反(在xy平面顺时针)。
在飞行
动力学中,roll, pitch 和 yaw 角通常分别采用符号;但是为了避免混淆于
欧拉角这里使用符号。
任何 3 维旋转矩阵都可以用这三个角来刻画,并且可以表示为 roll, pitch 和 yaw 矩阵的乘积。
是在 中的旋转矩阵
在中所有旋转的集合,加上复合运算形成了
旋转群SO(3)。这里讨论的矩阵接着提供了这个群的群表示。更高维的情况可参见Givens旋转。
角-轴表示
在三维中,旋转可以通过单一的旋转角和所围绕的
单位向量方向 来定义。
这个旋转可以简单的以生成元来表达:
在运算于
向量r上的时候,这等价于Rodrigues旋转公式:
角-轴表示密切关联于
四元数表示。依据轴和角,四元数可以给出为
正规化四元数Q:
这里的i,j和k是Q的三个虚部。
欧拉角表示
在
三维空间中,旋转可以通过三个欧拉角 来定义。有一些可能的欧拉角定义,每个都可以依据
轧辊, pitch 和 yaw 的复合来表达。依据 "z-x-z" 欧拉角,在右手
勒内·笛卡尔坐标中的主动旋转矩阵可表达为:
进行乘法运算生成:
因为这个旋转矩阵不可以表达为关于一个单一轴的旋转,它的生成元不能像上面例子那样简单表达出来。
SVD表示
对旋转轴 和旋转角,旋转矩阵
这里的 的纵列张开
正交于q 的空间而 G 是 度 Givens 旋转,就是说