点的旋转(2):四元数的推导

点的旋转(2):四元数的推导

  • 前言
  • 推导
    • 超复数
    • 如果交换两个乘子的顺序呢?
  • 它有什么性质?

前言

还记得上一节中我们怎么旋转一个二维向量的吗?
我们将其放入一个复平面中,通过乘子来旋转其所在的坐标系来得到结果
是的,跟2*3的例子一样,将该系下(1+0i)的位置变换至乘子r的位置,同时为了确保不会变形,我们限定乘子的模长为1(或者叫范数?随你啦),整个旋转看起来就像在圆的边上滑动。
下面让我们来看超复数:四元数,是如何推导的

推导

超复数

通过前一节,容易理解,我们旋转一个二维向量,做的工作仅仅只是把其坐标系的x轴上的1点旋转至乘子的位置
X ∗ ( A + B i ) X*(A+Bi) X(A+Bi)
如果我们扩充到三维空间呢?
不过这次旋转的对象从X变成了(X*(A+Bi)),我们记 P = X ∗ ( A + B i ) P = X*(A+Bi) P=X(A+Bi)

在前文 2* (-3)中,我们提到X轴旋转中划过的空间即是该维度(n=1维)的复空间(n+1维),是一个平面。

跟以前一样为了表示它的旋转,乘一个乘子 (C+Dj),j 垂直于平面P,如同复数定义的那样 j^2 = -1
P ∗ ( C + D j ) P*(C+Dj) P(C+Dj)
带回P
( X ∗ ( A + B i ) ) ∗ ( C + D j ) (X*(A+Bi))*(C+Dj) (X(A+Bi))(C+Dj)
化简:
X ∗ ( A C + B C i + A D j + C D i j ) X*(AC+BCi + ADj +CDij) X(AC+BCi+ADj+CDij)
该式子表示单个轴——X的三维旋转

a = A C , b = B C , c = A D , d = C D a = AC,b = BC,c = AD,d = CD a=ACb=BCc=ADd=CD
同时将 i×j 记为k
k = i j k = ij k=ij
k为同时垂直于i,j的一个轴
i,j,k此时构成一个右手系

我们得到两次乘子变换的一般形式
( a + b i + c j + d k ) . . . . ① (a+bi + cj +dk) .... ① (a+bi+cj+dk)....
并称其为四元数
四元数是最简单的超复数

如果交换两个乘子的顺序呢?

仅需将①i,j位置互换即可,同样我们写成一般形式
( a + c i + b j + d j i ) (a+ci + bj +dji) (a+ci+bj+dji)
因为
j i = − i j = − k ji = -ij = -k ji=ij=k
( a + c i + b j − d k ) . . . . ② (a+ci + bj -dk)....② (a+ci+bjdk)....
此时②已经变成和①截然不同的怪物了,可见:旋转的顺序不同对应的结果完全不同

事实上,乘法的交换律是一种极其特殊的情况
在这里你可以停下来画一个空间坐标系,将一个点旋转两次,再将两次旋转顺序颠倒看看结果

它有什么性质?

跟复数一样
i 2 = j 2 = k 2 = − 1 i^2 = j^2 = k^2 = -1 i2=j2=k2=1
同时根据向量积
i j = k ij = k ij=k
j k = i jk = i jk=i
k i = j ki = j ki=j
i k = − j ik = -j ik=j
k j = − i kj = -i kj=i
j i = − k ji = -k ji=k
i j k = k × k = k 2 = − 1 ijk = k×k = k^2 = -1 ijk=k×k=k2=1
至此,四元数的代数推导完毕,在后面我们将来了解四元数如何表达三维旋转。

你可能感兴趣的:(算法)