假设有某种数学函数,输入矢量,输出的仍然是一个矢量,且满足以下条件
那么定义为线性变换
比如就不是线性变换,因为不满足第二条
一般使用矩阵表示一个线性变换,设一个三维矢量,那么对其做线性变换
定义放缩变换为
用矩阵表示
以右手坐标系为例
描述一个旋转角度时,一般约定沿着坐标轴负方向向原点看,逆时针为正方向

围绕轴旋转的旋转矩阵
以为例

标准矢量经过旋转后,结果为
所以根据公式1.3.1
有穿过原点单位轴

求围绕该轴旋转的旋转矩阵


将矢量分解成两个矢量的和,一个是平行于的分量和垂直于的分量
由于是单位矢量,,所以
所以根据公式3.3.2.1,和同方向,且长度和相等,所以
由于不受旋转影响,所以
可以分解成两部分,一部分是平行于的分量另一部分是垂直于的分量,联合公式3.2.2.2
代入3.3.2.4可以得到
这个公式称为罗德里格旋转公式Rodrigues' rotation formula,使用以下方法得到其矩阵形式
根据矢量三重积公式,可以得到
所以
使用向量的叉乘矩阵来代替叉乘,这里记矩阵为向量的叉积矩阵
使用矩阵形式表达罗德里格旋转公式
所以矩阵形式的罗德里格旋转公式的公式为
设分别将带入3.3.2.6,得到
代入公式1.3.1得到
复数(Complex Number)可以表达为
其中被成为实部(Real Part), 被称为虚部(Imaginary Part), 复数的基本运算规律如下,设,那么
四元数(Quaternion)可以视为对复数的扩充,有1个实部,3个虚部,形式如下
其中,满足如下计算性质
汇总到如下表格中
四元数也可以表达成将实数部和虚数部分开的形式,对于四元数,设,则这个四元数可以表达为
对于两个四元数,基本运算规律如下
四元数的乘法满足结合律,但不满足交换律
但如果中的向量部分平行,由于,易证
定义四元数的模为
如果一个四元数的模为1,那么称这个四元数为单位四元数
定义四元数的共轭四元数为
共轭四元数满足如下运算
对于单位四元数,有
定义四元数的逆为,满足,由公式3.4.4.1可知
所以
四元数的逆满足如下运算
易知,如果是单位四元数
如果一个四元数的实部为0,那么称之为纯四元数(Pure Quaternion),由于纯四元数仅有3个虚部,可以将一个3D向量转换为一个纯四元数。记,那么
由此可见,向量的线性运算,都可以使用与之对应的纯四元数来代替。但乘法则不同,设两个纯四元数,相乘后结果为
对于向量,记四元数,这种四元数有一些很有用的特性,首先如果是单位向量,那么是单位四元数,易证:
另外
观察上面推导罗德里格旋转公式过程中的公式3.3.2.5,其中
带入公式3.3.2.5,可以得到
设两个纯四元数
根据公式3.4.5.1
所以是一个纯四元数
由于3.4.6.1中都是线性计算,将3.4.6.2和3.4.6.3代入其中,可以得到的四元数形式
设一个新的四元数
根据公式3.4.5.2,可以得到
且由于是单位四元数,可以知道
将3.4.6.4带入3.3.2.4中,可以得到罗德里格旋转公式的四元数形式为
由于,根据公式3.4.3.1,可知
由于,可以推断出,证明如下:
带入3.4.6.6,可以得到
也就是说,对于向量,围绕单位向量旋转,只需要构造四元数,可以利用下面的等式计算旋转后的向量
使用四元数表达旋转有一个好处就是可以实现组合、插值等计算,例如一个向量经过两次旋转变化,用四元数表示分别是,那么
根据公式3.4.4.4,可知
两个四元数相乘,可以转换为同等效果的矩阵,设两个四元数
那么
可以将左乘四元数视作左乘矩阵
而右乘四元数视作左乘矩阵
那么旋转一个向量对应的四元数的过程可以写作
或者
容易证明,这两个结果是一样的,经计算
忽略掉四元数中为0的实数部分,可以将一个旋转四元数转换为旋转矩阵
其中