四元数原理学习笔记

2024-03-25 03:38
文章标签 学习 笔记 原理 四元

本文主要是介绍四元数原理学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 四元数的数学性质
        • 定义

四元数的数学性质

定义

1.1:一般形式
q = s + x i + y j + z k s , x , y , z ∈ R \textbf{q} = s + x\textbf{i} + y\textbf{j} +z\textbf{k}\quad s,x,y,z\in\mathbb R q=s+xi+yj+zks,x,y,zR

1.2:虚数单位的运算规则
四元数将复数中的虚数单位扩充为三个,这三个虚数单位的运算规则是:
i 2 = j 2 = k 2 = ijk = − 1 ij = k , jk = i , ki = j \textbf{i}^2=\textbf{j}^2=\textbf{k}^2=\textbf{ijk}=-1\\ \textbf{ij}=\textbf{k},\textbf{jk}=\textbf{i},\textbf{ki}=\textbf{j} i2=j2=k2=ijk=1ij=k,jk=i,ki=j

四元数的这三个虚数单位以及他们的乘法运算很像是三维空间中三个正交单位向量的叉乘的关系:两个正交的单位向量的叉乘等于另一个单位向量,这个单位向量一定与其他两个单位向量都正交。那不妨就将这三个虚数代表三维空间中的三个正交的单位向量。

1.3:四元数的加法和乘法
四元数的加法和乘法可以看作是复数加法和乘法在虚数单位扩充之后的运算。其加法同样满足交换律,乘法满足结合律。

1.4:四元数的乘积一般式
记向量:
a = x a i + y a j + z a k b = x b i + y b j + z b k \textbf{a}=x_a\textbf{i}+y_a\textbf{j}+z_a\textbf{k}\\ \textbf{b}=x_b\textbf{i}+y_b\textbf{j}+z_b\textbf{k} a=xai+yaj+zakb=xbi+ybj+zbk

依照向量的运算法则,点积和叉乘结果如下:
a ⋅ b = x a x b + y a y b + z a z b a × b = ( y a z b − y b z a ) i + ( z a x b − z b x a ) j + ( x a y b − x b y a ) k \textbf{a}\cdot \textbf{b} = x_ax_b+y_ay_b+z_az_b\\ \textbf{a}\times\textbf{b}=(y_az_b-y_bz_a)\textbf{i}+(z_ax_b-z_bx_a)\textbf{j}+(x_ay_b-x_by_a)\textbf{k} ab=xaxb+yayb+zazba×b=(yazbybza)i+(zaxbzbxa)j+(xaybxbya)k

则两个四元数的乘积可以表示为:
q a q b = [ s a , a ] ⋅ [ s b , b ] = [ s a s b − a ⋅ b , s a b + s b a + a × b ] \begin{aligned} \textbf{q}_a\textbf{q}_b & = [s_a,\textbf{a}]\cdot[s_b,\textbf{b}]\\ &= [s_as_b-\textbf{a}\cdot\textbf{b},s_a\textbf{b}+s_b\textbf{a}+\textbf{a}\times\textbf{b}] \end{aligned} qaqb=[sa,a][sb,b]=[sasbab,sab+sba+a×b]

1.5:纯四元数
纯四元数是实部为 0 0 0的四元数
q = [ 0 , v ] \textbf{q}=[0,\textbf{v}] q=[0,v]

两个纯四元数的乘积为
q a q b = [ 0 , a ] ⋅ [ 0 , b ] = [ − a ⋅ b , a × b ] \begin{aligned} \textbf{q}_a\textbf{q}_b&=[0,\textbf{a}]\cdot[0,\textbf{b}]\\ &=[-\textbf{a}\cdot\textbf{b},\textbf{a}\times\textbf{b}] \end{aligned} qaqb=[0,a][0,b]=[ab,a×b]

1.6:单位四元数
对于向量 v v v,其可以写作其长度(范式)乘以一个单位向量
v = ∣ v ∣ v ^ \textbf{v} = |\textbf{v}|\hat{\textbf{v}} v=vv^
其中
∣ v ^ ∣ = 1 |\hat{\textbf{v}}|=1 v^=1
那么一个单位四元数的定义为实部为 0 0 0,虚部的范式为 1 1 1的四元数
q ^ = [ 0 , v ^ ] \hat{\textbf{q}}=[0,\hat{\textbf{v}}] q^=[0,v^]

将单位四元数与复数中的虚数单位作类比,有如下相似表示:
复 数 : z = a + b i 四 元 数 : q = s + v q ^ \begin{aligned} 复数&:&\textbf{z}=a+b\textbf{i}\\ 四元数&:&\textbf{q}=s+v\hat{\textbf{q}} \end{aligned} z=a+biq=s+vq^

1.7:共轭四元数
一个四元数 q \textbf{q} q的共轭即将其虚部向量取反
q = [ s , v ] q ∗ = [ s , − v ] \textbf{q}=[s,\textbf{v}]\\ \textbf{q}^*=[s,-\textbf{v}] q=[s,v]q=[s,v]
再根据1.4节得到的乘积一般式有:
qq ∗ = [ s 2 + v 2 , 0 ] = s 2 + v 2 \textbf{qq}^*=[s^2+\textbf{v}^2,\textbf{0}]=s^2+v^2 qq=[s2+v2,0]=s2+v2
注意这里的 v 2 \textbf{v}^2 v2是指两个向量的点积,等价于 ∣ v ∣ 2 = v 2 = a 2 + b 2 + c 2 |\textbf{v}|^2=v^2=a^2+b^2+c^2 v2=v2=a2+b2+c2,不可将其看作是 ( a i + b j + c k ) 2 (a\textbf{i}+b\textbf{j}+c\textbf{k})^2 (ai+bj+ck)2再用乘法结合律求解。

1.8:四元数的范数
四元数的范数的平方等于实部的平方加上虚部向量的范数,即
∣ q ∣ 2 = s 2 + v 2 = s 2 + v 2 |\textbf{q}|^2=s^2+\textbf{v}^2=s^2+v^2 q2=s2+v2=s2+v2

qq ∗ = ∣ q ∣ 2 \textbf{qq}^*=|\textbf{q}|^2 qq=q2

1.9:四元数的规范化
四元数的规范化定义为将四元数除以它的范数
q ′ = q |q| \textbf{q}'=\frac{\textbf{q}}{\textbf{|\textbf{q}|}} q=|q|q

1.10:四元数的逆
四元数的逆定义为:存在这样一个四元数 q − 1 \textbf{q}^{-1} q1使得以下式子成立:
qq − 1 = [ 1 , 0 ] = 1 \textbf{qq}^{-1}=[1,\textbf{0}]=1 qq1=[1,0]=1
则称这个四元数 q − 1 \textbf{q}^{-1} q1 q \textbf{q} q的逆。可以证明,四元数的逆可以用下列式子计算得到:
q − 1 = q ∗ ∣ q ∣ 2 \textbf{q}^{-1}=\frac{\textbf{q}^*}{|\textbf{q}|^2} q1=q2q

1.11:四元数的点积
四元数的点积等于实部和虚部各个部分分别相乘,其与向量的点积定义相似:
q 1 = [ s 1 , x 1 i + y 1 j + z 1 k ] q 2 = [ s 2 , x 2 i + y 2 j + z 2 k ] \textbf{q}_1=[s_1,x_1\textbf{i}+y_1\textbf{j}+z_1\textbf{k}]\\ \textbf{q}_2=[s_2,x_2\textbf{i}+y_2\textbf{j}+z_2\textbf{k}] q1=[s1,x1i+y1j+z1k]q2=[s2,x2i+y2j+z2k]
则点积结果为
q 1 q 2 = s 1 s 2 + x 1 x 2 + y 1 y 2 + z 1 z 2 \textbf{q}_1\textbf{q}_2=s_1s_2+x_1x_2+y_1y_2+z_1z_2 q1q2=s1s2+x1x2+y1y2+z1z2
利用四元数的点积,仿照向量的点积,我们可以定义两个四元数之间的夹角 θ \theta θ满足:
c o s θ = q 1 q 2 ∣ q 1 ∣ ∣ q 2 ∣ = s 1 s 2 + x 1 x 2 + y 1 y 2 + z 1 z 2 s 1 2 + x 1 2 + y 1 2 + z 1 2 s 2 2 + x 2 2 + y 2 2 + z 2 2 \begin{aligned} cos\theta&=\frac{\textbf{q}_1\textbf{q}_2}{|\textbf{q}_1||\textbf{q}_2|}\\ &=\frac{s_1s_2+x_1x_2+y_1y_2+z_1z_2}{\sqrt{s_1^2+x_1^2+y_1^2+z_1^2}\sqrt{s_2^2+x_2^2+y_2^2+z_2^2}} \end{aligned} cosθ=q1q2q1q2=s12+x12+y12+z12 s22+x22+y22+z22 s1s2+x1x2+y1y2+z1z2
对于单位四元数来说
c o s θ = s 1 s 2 + x 1 x 2 + y 1 y 2 + z 1 z 2 cos\theta=s_1s_2+x_1x_2+y_1y_2+z_1z_2 cosθ=s1s2+x1x2+y1y2+z1z2

这篇关于四元数原理学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843745

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

MySQL的隐式锁(Implicit Lock)原理实现

《MySQL的隐式锁(ImplicitLock)原理实现》MySQL的InnoDB存储引擎中隐式锁是一种自动管理的锁,用于保证事务在行级别操作时的数据一致性和安全性,本文主要介绍了MySQL的隐式锁... 目录1. 背景:什么是隐式锁?2. 隐式锁的工作原理3. 隐式锁的类型4. 隐式锁的实现与源代码分析4

MySQL中Next-Key Lock底层原理实现

《MySQL中Next-KeyLock底层原理实现》Next-KeyLock是MySQLInnoDB存储引擎中的一种锁机制,结合记录锁和间隙锁,用于高效并发控制并避免幻读,本文主要介绍了MySQL中... 目录一、Next-Key Lock 的定义与作用二、底层原理三、源代码解析四、总结Next-Key L

Spring Cloud Hystrix原理与注意事项小结

《SpringCloudHystrix原理与注意事项小结》本文介绍了Hystrix的基本概念、工作原理以及其在实际开发中的应用方式,通过对Hystrix的深入学习,开发者可以在分布式系统中实现精细... 目录一、Spring Cloud Hystrix概述和设计目标(一)Spring Cloud Hystr