四元

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

内容

埃德天使

埃德天使是加州理工学院和新墨西哥几天我的老朋友。埃德是作者一个受欢迎的系列教材计算机图形是现在已经达到了第8版。这些书有来自硅谷图形的WebGL来和JavaScript了OpenGL编程语言的进化。ED是工作在MATLAB的版本,我kibitzing。

两个维度

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

三个维度

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

哈密​​顿

哈密​​顿(1805-1865)是爱尔兰数学家,在都柏林三一学院教授,​​爱尔兰皇家天文学家。他的名字是与整个数学和物理学的重要概念有关。像他那个时代的许多其他数学家,他曾尝试通过添加第二个复杂的单元来概括二维复数。1846年,他意识到自己确实需要添加三个复杂的单位,$ I $,附加$ J $ $和$ķ。

点与叉积s manbetx 845

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

$$ A \ CDOT B = A_1 B_1 \ + \ A_2 B_2 \ + \ A_3 B_3 $$

叉积只被定义在三维空间中。两个向量的叉积是第三矢量,取向为垂直于由前两个跨越的平面。如果$ I,$ $Ĵ和$ $ķ是在三维空间中,则对于轴单位矢量向量的叉积$ A $和$ B $是

$$ A \次数b =(A_2 B_3 - A_3 B_2)\ I \ + \(A_3 B_1 - A_1 B_3)\Ĵ\ + \(A_1 B_2 - A_2 B_1)\ķ$$

这是叉乘的快照。

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

四元

四元数$ Q $有两个部分,一个标量$ S $和$矢量V $。标量是一个实数;认为$ S $作为标量单元的系数,$ 1 $的。矢量由三个实数;他们的三个假想单位的系数,$ I $,附加$ J $ $和$ķ。所以

$$ Q = [S,V] = S 1 \ + \ V_1 I \ + V_2Ĵ\ + \ V_3ķ$$

四元数乘法被定义使得每个假想单元的是$ $ -1平方根。

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

此外,三个单元通过他们的产品的循环特性的相互关系。s manbetx 845

$$ IJ = k时,\ \ JK = I,\ \き= j的$$

这些属性意味着

$$ジ= -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 I \ + V_2Ĵ\ + \ V_3ķ$$

另外是明显的。

$ 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) $ $

有在每个括号四个学期,所以在产品方面16。展开仔细因为$ I $,附加$ J $ $和$ķ没有上下班。应用汉密尔顿的规则,$ I ^ 2 = -1,$ I J = K,$ĴI = -k $等。术语16可以布置这样的。

$$ p Q = [\ r S - (U_1 V_1 + U_2 V_2 + U_3 V_3)\,$$

$$ \ \ \ \ \ \ \ \ R(V_1 I + V_2 J + V_3 K)+ S(U_1 I + U_2 J + U_3 K)\ +(U_2 V_3 - U_3 V_2)1 +(U_3 V_1 - U_1 V_3)J +(U_1 V_2 - U_2 V_1)K \] $$

我们认识到,两个熟悉的量,点和交叉产品。s manbetx 845

$$ 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]。例如,将它们插入产品定义中,

$$ I ^ 2 = [0 -i \ CDOT I,0 + 0 + I \倍I] = -1 $$,

$$ I J = [0 - 0,0 + 0 + I \倍J] = K $$

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

二星科学

二星科学是一个Patreon YouTube频道。https://www.patreon.com/acapellascience

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

QTN

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

我和埃德有我们自己更基本的目的,QTN

帮助QTN
四元数的基本构造函数。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在帮助浏览器中发布的输出

最重要的QTN方法是四元数乘积。我觉得这个代码是优雅的。

DBTYPE89:96QTN
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,q.v);94 r.v = P.S * q.v + q.s * p.v +交叉(p.v,q.v);95 R = QTN(R);96月底

整个QTN类定义只有大约150行长。

基本

这里有几个例子,我们的基本四元数对象的测试。

单位中的两个。

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

他们的产品是第三单元。

K = 1 *Ĵ
K = 0 + 0I + 0j的+ 1K

所有这三个是-1。

Ijk = i*j*k = i^2 ii = i*i
IJK = -1 + 0I + 0j的+ 0K ISQ = -1 + 0I + 0j的+ 0K II = -1 + 0I + 0j的+ 0K

随机的

两个随机QTN的整系数

P = randq Q = randq
P = 2 + 8i中 -  1J + 4K Q = 0 + 4I  -  6J + 7K

加法。

p_plus_q = P + Q
p_plus_q = 2 + 12 1  -  + 7J 11K

乘法。

pq = p *
PQ = -66 + 25I  -  52J  -  30K

正确的部门。

R = PQ / P
R = 0 + 9.6i + 2j - 2.2k

左师。p \(P * Q / P)* P应该是的舍入误差范围内问:

TEST1 =范数(P \ r * P  -  Q)
TEST1 = 4.4409e-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 =规范(R ^ 10  -  E)
E = 1 + 0I + 0j的+ 0K TEST2 = 4.6059e-16

代码

(加,2021年9月11日)。你可以得到的代码QTN并从有关这些链接功能:qtn.mrot.mEuler.mrandq.mqtn_examples_1.m




发布时间与MATLAB®R2021b

|

评论

要发表评论,请点击这里登录您的MathWorks帐户或创建新的。