四元数
复数可以表示平面向量,在物理上有着广泛应用。于是人们很自然地想到,能不能仿照复数复数集找到“三维复数”,用以表示空间向量呢?爱尔兰的数学家哈密顿首先发现,要想在实数基础上建立三维复数,使它具有实数和复数的各种运算性质,这是不可能的。他进而研究“四维复数”,笪以所谓四元数,并于1857的发表了《四元数讲义》。他逝世后的第二年,即1866年出版了《四元数原理》。
复数仅有两个单位1与i,而四元数有四个单位1, i, j, k,一般的四元数的形式是
a+bi+cj+dk,
这里,i, j, k是空间笛卡儿直角坐标系中三个坐标轴上的单位向量,类似于复数的虚数单位;a, b, c, d是实数,称为四元素的系数。
两个四元数相等被规定为对应系数分别相等。
四元数的加减法,和一般复数的加减法相同,也满足交换律和结合律。四元数的乘法满足结合律但并不满足交换律,这是和实数、复数最显著的不同,也正因为如此,四元数集不能构成数域,人们称它为广域。
四元素的研究,推动了向量代数的发展。美国著名的物理学家麦克斯韦是哈密尔顿的学生。他在掌握了四元数理论后,利用向量分析等工具建立起了著称于世的电磁理论。
19世纪,数学家们证明了:对于实数域上的n维向量空间,当n>2时 ,无法定义乘法运算,使它成为域。这就是为什么只称二维向量的为复数,而不称其他向量为复数的道理。当n>2时,n维向量空间不再称为数域而称为超复数系统。
四元数的运算:
基本的:
p=[1 2 3 4] q=[5 6 7 8]
p+q=[6 8 10 12]
2p=[2 4 6 8]
2个四元数的积:
p=[m,u] q=[n,v] pq=[mn-vu,nu+mv+(v×u)]
m,n是标量,u,v是向量
共轭四元数:
p=[n,v] ~p=[n,-v]
旋转1个四元数( 或向量):
p'=q(p)(~q)
旋转向量的话:用向量取代p的向量部分,p的标量部分取零。
四元数到旋转矩阵的变换:
| w2+x2-y2-y2 2xy-2wz 2xy+2yn |
| 2xy+2wz w2-x2+y2-y2 2yz-2wx |
| 2xz-2wy 2yz-2wx w2-x2-y2+z2 |
旋转矩阵到四元数的变换:
tr=m11+m22+m33
if(tr>0)
{
temp=1/2squrt(tr+1);
qw=0.25/temp qx=(m23-m32)temp qy=(m31-m13)temp qz=(m12-m21)temp
}else
{
m11,m22,m33中
if(m11 is greatest){
temp=1/2squrt(1+m11-m22+m33)
qw=0.25/temp qx=(m21+m12)temp qy=(m13+m31)temp qz=(m32-m23)temp}
if(m22 is greatest){
temp=1/squrt(1+m22-m11-m33)
qw=(m21+m12temp qx=0.25/temp qy=(m32+m23)temp qz=(m13-m31)temp}
if(m33 is greatest){
temp=1/squrt(1+m33-m11-m22)
qw=(m13+m31)temp qx=(m32+m23)temp qy=0.25/temp qz=(m21-m12)temp}
}
euler angles and quaternions:
q=[cos(angle/2),sing(angle/2)axis]
axis为一向量,是旋转所绕之轴
sa=squrt(1-qw2) angle=2arccos(qw)
axisx=qx/sa axisy=qy/sa axisz=qz/sa