四元数

四元数是复数的一般化,在计算机图形学和许多其他领域都有应用。

内容

Ed的天使

Ed Angel是我在加州理工学院和新墨西哥州的老朋友。埃德著有一套受欢迎的教科书关于计算机图形,现在已经达到了第八版。这些书讲述了OpenGL编程语言从Silicon Graphics到WebGL和JavaScript的演变过程。艾德在做一个MATLAB版本,我在瞎扯。

两个维度

二维的生活很容易。平面上的一个点很容易用它的笛卡尔坐标$(x,y)$,或者极坐标$(r,\theta)$,或者一个复数$z$来描述。点绕原点的旋转很容易用笛卡尔坐标乘以一个2 × 2的正交矩阵来描述,或者用极角的增量来描述,或者用$z$乘以另一个复数来描述。

三个维度

三维的情况更复杂。有笛卡尔坐标$(x,y,z)$,或者球坐标$(r,\theta,\psi)$。但是单复数的三维模拟是什么呢?旋转更加复杂。它们需要说明旋转轴和角度。有很多3 × 3的正交矩阵可以产生旋转来选择。

威廉·罗文汉密尔顿

威廉·罗文·汉密尔顿(William Rowan Hamilton, 1805-1865),爱尔兰数学家,都柏林三一学院教授,爱尔兰皇家天文学家。他的名字与数学和物理学中的重要概念联系在一起。像他那个时代的许多其他数学家一样,他试图通过添加第二个复单位来概括二维复数,但没有成功。1846年,他意识到他实际上需要添加三个复杂的单位,$i$, $j$和$k$。

点与叉积下载188bet金宝搏

哈密尔顿四元数算法的关键成分是点积和叉积。下载188bet金宝搏点积,也被称为内积,是线性代数在任何维数中的一个常见特征。两个向量的点积是一个标量。

$ $ \ cdot b = a_1 b_1 \ + \ a₂b_2 \ \ a_3 b_3 $ $

外积只在三维空间中定义。两个向量的叉乘是第三个向量,垂直于前两个向量张成的平面。如果$i$, $j$和$k$是三维坐标轴的单位向量,那么向量$a$和$b$的叉积是

$ $ \ b = (a₂b_3 a_3 b_2) \ \ + \ (a_3 b_1 - a_1 b_3) \ j \ + \ (a_1 b_2 - a₂b_1) \ k $ $

这是叉乘的快照。

垂直于由$a$和$b$张成的平面的向量有两个可能的方向。传统的选择是由这张瑞士纸币上的右手法则和Facebook公司办公室标志上的表情符号做出的。

四元数

四元数$q$由两部分组成,标量$s$和矢量$v$。标量是一个实数;把$s$看成是标量单位$1$的系数。向量由三个实数组成;它们是三个虚单位$i$, $j$和$k$的系数。所以

$ $ q = [s, v] = s 1 \ \ + v_1 \ + v_2 j \ \ v_3 k $ $

四元数乘法的定义是,每个虚单位都是$-1$的平方根。

$ i^2 = -1, j^2 = -1, k^2 = -1

此外,这三个单元通过其产物的循环性质相互联系。下载188bet金宝搏

$ ij = k, \ \ jk = i, \ \ ki = j $

这些属性意味着

$ k = -k, \ \ kj = -i, \ \ ik = -j $

我们把$i$, $j$和$k$的这些性质称为“汉密尔顿法则”。

四元数增加

假设我们有两个四元数。

$ $ p = [r u] = r 1 \ + \ u_1 \ + u_2 j \ \ u_3 k $ $

$ $ q = [s, v] = s 1 \ \ + v_1 \ + v_2 j \ \ v_3 k $ $

加法是显而易见的。

$ p + q = [r+s, u+v] $

四元数乘法

四元数乘法既巧妙又复杂。

$ $ p q = (r + u_1 i + u_2 j + u_3 k) (s + v_1 i + v_2 j + v_3 k) $ $

每个括号里有4项,所以乘积里有16项。小心扩展,因为$i$, $j$和$k$不通勤。运用汉密尔顿法则,$i^2 = -1$, $i j = k$, $j i = -k$,等等。这16项可以这样安排。

$ $ p q = [\ r s - (u_1 v_1 + u_2 v_2 + u_3 v_3) \, $ $

$$ \ \ \ \ \ \ \ \ r(我+ v_2 j + v_1 v_3 k + s (u_1 i + u_2 j + u_3 k) \ + (u_2 v_3——u_3 v_2) i + (u_3 v_1 u_1 v_3) j + (u_1 v_2 - u_2 v_1) k \] $ $

我们认识两个熟悉的量,点积和叉积。下载188bet金宝搏

$ u \cdot v = u_1 v_1 + u_2 v_2 + u_3 v_3 $

$ $ u、v = (u_2 v_3——u_3 v_2) i + (u_3 v_1 u_1 v_3) j + (u_1 v_2 - u_2 v_1) k $ $

所以结果是

$ p q = [r s - u \cdot v, r v + s u + u \times v] $$

这是汉密尔顿对四元数乘积的定义。

单位$i$, $j$和$k$的标量部分等于0,向量部分等于[1,0,0],[0,1,0]和[0,0,1]。例如,将它们插入产品定义中,

$ $ ^ 2 = [0 - i \ cdot我0 + 0 + i \ *我]= 1 $ $,

$ ij = [0 - 0,0 + 0 + ij] = k $$

$ I = - k $,即$ I = - k $,即$ I = - k $

美中不足的科学

卡佩拉科学是一个Patreon YouTube频道。https://www.patreon.com/acapellascience

2016年,Capella Science制作了一个视频,视频中有两个汉密尔顿,一个是非常受欢迎的百老汇音乐剧《汉密尔顿》,另一个是爱尔兰数学家汉密尔顿。https://www.youtube.com/watch?v=SZXHoWwBcDc.下面是视频中的一帧截图。

本考察团

MATLAB的2021a和2021b版本包括a四元数对象,该对象在几个导航工具箱之间共享。

艾德和我有了更基本的目标,本考察团

帮助本考察团
四元数的基本构造函数。qtn(a,b,c,d) qtn(a,[v1 v2 v3]) qtn(a)方法+ p + q - p -q uminus -q mtimes p*q ml除p\q mr除p/q mpower q^n inv(q) norm(q) disp(q)函数rot Euler randq qtn_examples注释:所有角度都是度数。该对象没有向量化。文档doc qtn在帮助浏览器中发布的输出

最重要的本考察团方法为四元数积。我认为这段代码很优雅。

dbtype89:96本考察团
89函数r = mtimes(p,q) 90% p*q 91 p = qtn(p);92 q = qtn(q);93 r.s = p.s*q。s -点(p.v,无论如何);94 r.v = p.s*q。v p + q *。v +十字架(p.v,无论如何);95 r = qtn(r);96年结束

整个本考察团类定义只有大约150行长。

基本

这里有一些基本的四元数对象的例子和测试。

两个单位。

I = qtn(0,[1 0 0]) j = qtn(0,[0 1 0])
I = 0 + 1i + 0j + 0k j = 0 + 0i + 1j + 0k

他们的产品是第三个单元。

k = i * j
K = 0 + 0i + 0j + 1k

这三个都是-1。

Ijk = i*j*k = i^2 ii = i*i
Ijk = -1 + 0i + 0j + 0k = -1 + 0i + 0j + 0k = -1 + 0i + 0j + 0k

随机

两个随机本考察团的系数为整数

P = randq q = randq
P = 2 + 8i - 1j + 4k q = 0 + 4i - 6j + 7k

加法。

P_plus_q = p + q
P_plus_q = 2 + 12i - 7j + 11k

乘法。

pq = p *
Pq = -66 + 25i - 52j - 30k

正确的部门。

r = pq / p
R = 0 + 9.6i + 2j - 2.2k

左部。p \ * p (p * q / p)应该在舍入误差范围内

Test1 = norm(p\r*p - q)
test1 = 4.4409 e-16

旋转

类型腐烂
函数r = rot(theta,v) % rot r = rot(theta,v)是角旋转%的四元数(qtn),以角度表示,绕轴v旋转v = v/范数(v);R = qtn(cosd(theta), sind(theta)*v);结束

随机的旋转轴。

v = randn(1、3)
V = -0.1241 1.4897 1.4090

绕旋转36度v。

r =腐烂(36 v)
R = 0.809017 - 0.0355214i + 0.426247j + 0.403167k

36度旋转重复10次就是360度旋转,这应该在四元数乘法恒等式的舍入误差范围内。

E = qtn(1) test2 = norm(r^10 - E)
E = 1 + 0i + 0j + 0k

代码

(2021年9月11日增补)。你可以得到代码本考察团以及这些链接中的相关功能:qtn.mrot.mEuler.mrandq.mqtn_examples_1.m




发布与MATLAB®R2021b

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。