当前位置: 首页 > news >正文

四元数与旋转——学习笔记(一)

联系方式:860122112@qq.com

四元数与旋转——学习笔记(一)
四元数与旋转——学习笔记(二)
四元数与旋转——学习笔记(三)

一、引言

三维空间里向量或坐标系之间的旋转关系可以用 3×3 的标准正交矩阵表示,称为旋转矩阵。但是,旋转矩阵中的9个元素只有4个是独立的,因此它是冗余的,而且它的几何解释也不够清楚。此外,在进行两次旋转时,两个旋转矩阵相乘需要进行27次乘法和18次加法操作。

四元数(quaternion),是在1843年W.R.Hamilton与他妻子在都柏林皇家运河边散步时突然想到的,他把四元数乘法的基本公式

i^2=j^2=k^2=i^j^k^=1
刻在了桥的石头上。四元数用来描述三维空间旋转关系时非常有效,它是一个四元组,仅用4个数就能完成一个旋转矩阵所表示的关系。而且它能很形象的描述旋转时所绕的轴和旋转角度,在进行两次旋转时,四元数只需要进行16次乘法和12次加法操作,比旋转矩阵高效。

二、四元数代数

四元数由一个标量(实数)和一个向量构成。假设三维空间下标准正交基的3个单位向量为 i^=(1,0,0),j^=(0,1,0),k^=(0,0,1) ,一个四元数可以定义为一个标量 q0 和一个向量 q 的和,即:
(1)

q=q0+q=q0+q1i^+q2j^+q3k^

《Robotics,Vision and Control》里面将标量和向量分开,写成:
q=q0<q1,q2,q3>

尖括号外是标量,尖括号内时向量。

加法
设另一个四元数为
(2)

p=p0+p1i^+p2j^+p3k^

p+q=(p0+q0)+(p1+q1)i^+(p2+q2)j^+(p3+q3)k^

四元数取负
p=p0p1i^p2j^p3k^

乘法
基本规则:
i^2=j^2=k^2=i^j^k^=1
i^j^=j^i^=k^
j^k^=k^j^=i^
k^i^=i^k^=j^

两四元数 pq 相乘
(3)
pq====(p0+p1i^+p2j^+p3k^)(q0+q1i^+q2j^+q3k^)p0q0(p1q1+p2q2+p3q3)+p0(q1i^+q2j^+q3k^)+q0(p1i^+p2j^+p3k^)+(p2q3p3q2)i^+(p3q1p1q3)j^+(p1q2p2q1)k^p0q0pq+p0q+q0p+p×qp0q0pq<p0q+q0p+p×q>

用矩阵形式表示:
pq=p0p1p2p3p1p0p3p2p2p3p0p1p3p2p1p0q0q1q2q3

例一:

p=3+i^2j^+k^=3<1,2,1>q=2i^+2j^+3k^=2<1,2,3>

p0q0pq=6(2)=8

p0q+q0p+p×q=3(i^+2j^+3k^)+2(i^2j^+k^)+(8i^4j^)=9i^2j^+11k^

所以
pq=89i^2j^+11k^=8<9,2,11>

共轭形式
使用上面(1)的四元数 q ,则q的共轭形式记为 q
q=q0q=q0q1i^q2j^q3k^=q0<q1,q2,q3>
其实就是向量部分加负号。
由前面介绍的加乘法操作和共轭的定义,可以推导出
(q)=q+q=qq=q2q0qq

给定两个四元数 p q,有:
(4)
(pq)=qp

范数
四元数 q 的范数记为|q|,大小为 |q|=qq 。若 |q|=1 q 单位四元数。两个四元数相乘之后的范数平方是两个四元数各自范数平方后的乘积:
|pq|2=====(pq)(pq)pqqpp|q|2ppp|q|2|p|2|q|2


四元数的逆定义为:
q1=q|q|2

q1q=qq1=1 。若 q 单位四元数,则q1=q


假设有单位四元数 q=q0+q ,则 |q|=q20+q2=1 ,则意味着存在唯一的 θ[0,π] 使得 cosθ=q0 sinθ=q 。因此四元数 q 可以写成

q=cosθ+u^sinθ

其中单位向量 u^=q/q
对于一般的四元数 q 可以表示为通过范数|q|进行缩放的单位四元数,即
(5)

q=|q|(cosθ+u^sinθ)
其中 u^=q/q θ=arccos(q0/|q|)
根据复数的欧拉特性
a+bi=a2+b2eiϕ
其中 i2=1 ϕ= atan2 (b,a) 。推广到四元数 q ,根据公式(5)有
q=|q|euθ
因此,可以定义 q 的幂为
(6)
qρ=|q|ρ(euθ)ρ=|q|ρ(cos(ρθ)+u^sin(ρθ))
其中 ρR (实数)

指数和对数
四元数 q 的指数和对数公式为:
(7)

eq=eq0(cosq+u^sinq)

(8)

lnq=ln|q|+u^arccos(q0|q|)
不难证明:
(9)
elnq====eln|q|+u^arccos(q0|q|)|q|eu^arccos(q0|q|)|q|(q0|q|+u^q|q|)q

参考文献
Yan-Bin Jia. Quaternion and Rotation



http://www.taodudu.cc/news/show-6117782.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • oracle去掉0x00,Oracle O001 / O00n 进程 100% CPU资源耗用
  • Tp5自动加载创建admin和index文件夹
  • thinkphp5调用shell脚本_ThinkPHP 5.x远程命令执行测试工具(可getshell)
  • php 微信支付 回调处理,TP微信支付(回调处理)
  • 2008 mysql 本地安全_apache在windows2003或win2008环境中的安全设置
  • lnmp 一键安装包 安装tp5.1 404,500等相关问题
  • 解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题
  • php phpstudy虚拟域名配置
  • TP-Admin 一个拥有站群功能的多功能CMS基础系统
  • 创意编程/小学组(4-6年级)-图形化创意
  • 【品牌营销策划方案】2020碧桂园x江小白创意引爆策略方案【白酒】【IP】【创意营销】
  • 渐变多彩创意双十二活动方案主题PPT
  • 视频批量剪辑:如何给视频添加特效,比如:色彩变幻效果特效,怎么制作?
  • 如何给视频添加特效字幕?分享一个简单好用的办法
  • 剪辑视频怎么加音效 视频音效常用都有哪些类型
  • 视频编辑工具:添加水印、特效、音乐、导出视频、视频转gif
  • 谁知道下面这个视频中的特效是用什么软件做的?
  • 有哪些能给视频加特效字幕的软件?试试这几种简单方法
  • 求分享如何给短视频加特效
  • 4500m a8 amd_amd a8 4500m等同什么intel
  • R7 4800U对比R5 4600U性能差距
  • 锐龙4750u和4800u的区别
  • html4和html5的区别
  • PHP的apcu是什么,opcache又是什么?
  • 全志H3停产,A40I/T3更胜一筹--CoM-X40I核心模块来了
  • i5 6600 HD530联想扬天S5250黑苹果
  • 全志科技A40i国产开发板——性能参数综合测试
  • 全志A40i开发板(4核ARM CortexA7)测评合集——存储介质读写测试
  • 全国产!全志A40i+Logos FPGA核心板(4核ARM Cortex-A7)硬件说明
  • 【解决电脑】开机屏幕左键无反应,右键变加载;选择文件夹未响应,卡顿40秒后恢复;新建文件夹正常,删除移动卡顿