三维坐标旋转矩阵推导过程(包看懂)
推导前提:
- 坐标使用右手坐标系,角度逆时针旋转为正。
- 绕X轴旋转角度为 俯仰角 即Pitch
- 绕Y轴旋转角度为 偏航角 即Yaw(Head)
- 绕Z轴旋转角度为 翻滚角 即Roll
一、平面二维坐标点的旋转
如右图所示,根据三角函数关系,可以列出向量OP与OP'的坐标表示形式:
x = |OP|•cosα x′ = |OP|•cos(α+β)
y = |OP|•sinα y′ = |OP|•sin(α+β)
将P′(x′,y′)表达式展开:
x′ = |OP|•cos(α+β) = |OP|•(cosα•cosβ - sinα•sinβ) = x•cosβ - y•sinβ
y′ = |OP|•sin(α+β) = |OP|•(sinα•cosβ + cosα•sinβ) = x•sinβ + y•cosβ
为方便运算理解,我们将二维点旋转表示为矩阵:
以上便是二维坐标点的旋转矩阵,接下来我们来推导三维坐标点的旋转矩阵
二、立体三维坐标点的旋转
1、绕Z轴旋转
参考二维点旋转矩阵同样的推导流程,我们可以推导出来三维点绕Z轴旋转的坐标表达式:
x′ = |OP|•cos(α+β) = |OP|•(cosα•cosβ - sinα•sinβ) = x•cosβ - y•sinβ
y′ = |OP|•sin(α+β) = |OP|•(sinα•cosβ + cosα•sinβ) = x•sinβ + y•cosβ
z′ = z
为方便运算理解,我们将三维点旋转表示为矩阵:
2、绕Y轴旋转
3、绕X轴旋转
4、绕三轴旋转(先绕x,再绕y,最后绕z轴旋转。)
三轴全旋转矩阵 :
整理计算后表达式为:
注:绕轴旋转的顺序不一样,得到的旋转矩阵也不一样!
综上所推导,得到三维旋转点的对应关系:
旋转矩阵推导过程PDF文档下载
三维坐标旋转矩阵推导过程(包看懂)相关推荐
- 三维坐标系旋转矩阵推导
注意坐标系旋转不同于坐标点旋转 坐标系旋转角度θ则等同于将目标点围绕坐标原点反方向旋转同样的角度θ 1.三维坐标系推导过程 假设三维坐标系是一个右手坐标系.如下图 可以通过右手定则确定是右手坐标系. ...
- 单文件浏览器_图文并茂深度解析浏览器渲染原理,包看懂超值得收藏
在我们面试过程中,面试官经常会问到这么一个问题,那就是从在浏览器地址栏中输入URL到页面显示,浏览器到底发生了什么?这个问题看起来是老生常谈,但是这个问题回答的好坏,确实可以很好的反映出面试者知识的广 ...
- 坐标系旋转矩阵推导过程
一.先来个平面旋转的分析: 两角和(差)公式 推导 旋转变换一般是按照某个圆心点,以一定半径 r 旋转一定的角度α,为了简单起见我们给出下面的情景 假定点A(x,y)想经过旋转变换到达B(x',y') ...
- 【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?...
简介 Floyd-Warshall算法(Floyd-Warshall algorithm),是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似.该算法名称以 ...
- 反向传播算法推导过程(看一篇就够了)
反向传播BackPropagation算法简称BP,算是神经网络的基础了. 在神经网络中,正向传播用于模型的训练,模型中的参数不一定达到最佳效果,需要进行"反向传播"进行权重等参数 ...
- 人人都能看懂的EM算法推导
作者丨August@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/36331115 编辑丨极市平台 估计有很多入门机器学习的同学在看到EM算法的时候会有种种疑惑:EM ...
- em算法 实例 正态分布_人人都能看懂的EM算法推导
↑ 点击蓝字 关注极市平台作者丨August@知乎(已授权)来源丨https://zhuanlan.zhihu.com/p/36331115编辑丨极市平台 极市导读 EM算法到底是什么,公式推导怎么去 ...
- 只用2页纸,北大数学校友攻破计算机30年难题!过程浅显直白,看懂仅需线性代数基础...
边策 发自 凹非寺 量子位 报道 | 公众号 QbitAI 数学世界中有很多猜想,比如哥德巴赫猜想.黎曼猜想,有些问题已经困扰了全人类几百年. 如果某一天,某个人突然跳出来说:"我只用几页 ...
- 【图解】连狗子都能看懂的Python基础总结(二)什么是库、包、模块?
[图解]连狗子都能看懂的Python基础总结!(二)什么是库.包.模块? 本章内容 什么是模块? 什么是包? 什么是库? 什么是标准库和第三方库? 上次,我们解释了"变量".&qu ...
最新文章
- 云效(原RDC)如何构建一个基于Maven的Java项目
- According to TLD or attribute directive in tag file, attribute value does not accept any expressions
- BigData:大数据开发的简介、核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS、HBase、Hive}+Docker)、经典场景应用之详细攻略
- std string与线程安全_C++标准库多线程简介Part1
- MQ java.lang.OutOfMemoryError: unable to create new native thread
- Kali Linux与Ubuntu的ssh服务
- Mysql8.0 15安装后怎么打开_mysql-8.0.15-winx64 解压版安装 图文详解
- 一道哈夫曼二叉树题目--稍微容易一点
- PhoneGap开发环境搭建
- # heapsort
- 代码雨代码源复制_黑色帝国中代码雨如何实现?用python就可以了
- [C#]六十甲子纳音WM版 v2.1 By:LESLIE
- 【翻译】steam离线时通过局域网游玩L4D2(求生之路2)
- 3.0.0 alpha 重磅发布!九大新功能、全新 UI 解锁调度系统新能力
- C语言 四种不同方法来判断闰年
- Android 视频录制工具类VideoRecordUtil
- Homestead GuestAdditions seems to be installed (6.0.6) correctly, but not running
- 精美的mac屏保需要?试试Aerial 2.1.3汉化版支持big sur!
- 微信公众号(服务号)接入开发之微信授权登陆
- Java学习笔记类对象多态继承(下)