【酷飞网 51kufei.com】上周,我们为大家介绍了求解求解无人机姿态角的各种算法,那么四元数算法基本的运算法则又是什么呢?今天,我们将为大家介绍四元数算法运算规则及基本概念。

大家知道,四元数可以表示三维空间的旋转信息,那接下来我们先来了解下四元数的基本概念及运算法则。

四元数定义

在数学中四元数定义为

上述关系可以叙述为:相同单位向量进行四元数乘法呈虚单位特性,相异单位向量进行四元数乘法呈两向量叉乘特性,故四元数可以看作一个超复数(超复数是复数在抽象代数中的引申,以高维度呈现。),也可看作四维空间中的一个向量。

四元数的表示形式

四元数有多种表现形式,有矢量式、复数式、三角式、矩阵式、指数式。

四元数的大小

数学中用四元数的范数来表示四元数的大小,具体如下:

四元数的运算法则

A. 加法与减法

B. 乘法

乘法又分四元数与四元数相乘、四元数与标量相乘,具体如下:

a. 与标量相乘

b. 与四元数相乘

若有如下两个四元数:

C. 除法(称为求逆)

逆的定义:

也即有

由于地理坐标系与物体坐标系均为直角坐标系,各个轴之间均为直角,当我们只研究两个坐标系之间的角度变化时,可将物体(等效为刚体)与坐标系固联,也即是,两个坐标系之间的角位置关系可用刚体的转动来表示。

那么物体从一个姿态变化到另一个姿态,可等效为物体绕了某一个轴通过无中间过程的一次旋转完成,但实际物体可能经过了多次中间过程才变化到了我们想要的姿态,通过这种变换关系,可求出物体从地理坐标系变到物体坐标系坐标或者从物体坐标系变到地理坐标系的坐标。

变换关系的推导:当我们研究两个坐标之间的角度变化关系(地理坐标系与物体坐标系)时,取物体坐标系与物体固联,物体坐标系与物体之间角位置始终不变,因此,我们可以以物体(视为刚体)定点转动问题来推导我们想要的变换关系,下面,我们就来推导一下我们想要的变化关系。

由图可知:

所以有

则有

由于未旋转之前,物体坐标系(b系)与地理坐标系重合,则有

对于物体来说,在转动过程中,位置向量与物体的坐标系之间的相对角位置始终不变,即有

所以记D为物体坐标系至地理坐标系的坐标变换矩阵,记为

我们已经知道四元数的范数定义为:

所以可以得出描述物体转动的四元数为规范化四元数。

四元数算法 c语言,四元数算法运算规则及基本概念相关推荐

  1. 老鼠走迷宫php算法,C语言经典算法 - 老鼠走迷官(一)

    C语言经典算法 - 老鼠走迷官(一) 说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表 示老鼠的行走路径,试以程式求出由入口至出口的路径. 解法老鼠的走法有上.左.下 ...

  2. 克鲁斯卡尔算法c语言,Kruskal算法(一)之 C语言详解

    最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树. 例如,对于如上图G4所示的连通网可以有多棵权值总和 ...

  3. bf算法c语言'',BF算法

    BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符:若不相 ...

  4. bfgs算法c语言,机器学习算法实现解析——liblbfgs之L-BFGS算法

    在博文"优化算法--拟牛顿法之L-BFGS算法"中,已经对L-BFGS的算法原理做了详细的介绍,本文主要就开源代码liblbfgs重新回顾L-BFGS的算法原理以及具体的实现过程, ...

  5. apriori算法 c语言,数据挖掘算法——Apriori算法

    Apriori算法 首先,Apriori算法是关联规则挖掘中很基础也很经典的一个算法. 转载来自:链接:https://www.jianshu.com/p/26d61b83492e 所以做如下补充: ...

  6. 高斯平滑算法 c语言,高斯模糊算法(gaussian)

    项目上对图像处理需要用到点高斯算法,网上找到一篇对原理及部分问题分析讲解的还不错的文章,分享一下,后付自己的一段代码 - 理论 - 高斯分布函数可表示为一个一维的函数G(x) 或者一个二维的函数G(x ...

  7. prim算法c语言,Prim算法(一)之 C语言详解

    本章介绍普里姆算法.和以往一样,本文会先对普里姆算法的理论论知识进行介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现. 普里姆算法介绍 普里姆(Prim)算法,和克鲁斯卡尔算法一样 ...

  8. 自动寻路算法C语言,bfs算法(c语言贪吃蛇自动寻路算法)

    广度优先法(BFS)算法C/C++代码,要说明和图解!谢谢! #include #define MAX 10 int front=-1,rear=-1; struct node { int value ...

  9. 最小延迟调度问题算法c语言,【算法概论】贪心算法:最小延迟调度问题

    最小延迟调度问题 Scheduling to Mnimizing Lateness 问题描述: 假定有一单个的资源在一个时刻只能处理一个任务.现给定一组任务,其中的每个任务 i 包含一个持续时间 ti ...

最新文章

  1. XSD标准架构-----xsd:element 元素详解
  2. Android.mk文件编写
  3. 一个栗子上手CSS3动画
  4. docker入门,基于ubuntu16.04
  5. Qt::Key_Return和Qt::Key_Enter区别
  6. 0076-小升初1:生日蛋糕
  7. 修改字段类型_PostgreSQL 关于字段类型的修改 谣言与止谣
  8. 计算机网络 --- 数据链路层aloha协议
  9. oracle下载,linux版本的oracle数据库下载
  10. 数学建模之时间序列分析
  11. 【存储】AIX存储管理基本概念和操作(LVM)
  12. IPtable 工作原理
  13. DDos防护系列之2--DDos防御策略
  14. Android FBReader基础资料文档
  15. Ubuntu下多网卡配置RTNETLINK answers: File exists的解决方案
  16. java毕业设计-java SSM超市积分兑换系统
  17. SDWebImage 第三方框架的使用——网络图片的处理操作
  18. HTML、CSS面试题
  19. 2020美团笔试题目:送餐小区数量
  20. 桥接模式和装饰者模式的区别

热门文章

  1. R软件及R studio的下载与安装
  2. Android 类加载机制
  3. 针对内存修改的反作弊方法
  4. Python SSL Socket长连接加密通讯
  5. 小程序云开发(一)微信登录实现
  6. 恩智浦半导体与CAICT合作 推动智能交通创新
  7. 深度学习案例分享 | 房价预测 - PyTorch 实现
  8. stm32 机械周期_stm32定时器周期计算
  9. 联想Filez助力实地集团信息化构建,重塑地产行业新未来
  10. 一个可以使用多个正则表达式进行多次尝试匹配、替换或提取的Excel VBA自定义函数(UFD)...