欧拉角pitch、yaw,roll的理解
2015-11-25 21:38
330 查看
关于旋转永远是做游戏的难点和混乱点。我们知道表示一个旋转有多种方式,简单的欧拉角,复杂点的四元数,再复杂点的矩阵。之前接触unity可以用四元数和欧拉角两种方式表示旋转,最近一直研究虚幻引擎,目前只看到了欧拉角这一种旋转方式。
欧拉角是表达旋转的最简单的一种方式,形式上它是一个三维向量,其值分别代表物体绕坐标系三个轴(x,y,z轴)的旋转角度。这样的话,很容易想到,同样的一个三维向量,代表了绕x,y,z的旋转值,先进行那个旋转是否对结果有影响呢?显然是有影响的,可以拿着你的手机试一下,不同的旋转顺序会代表不同的旋转结果。所以,一般引擎都会规定自己的旋转顺序。
下面三张动图形象的表示了欧拉角的旋转方式。第一张是绕x轴旋转pitch,第二张绕y轴旋转yaw,第三张是绕z轴旋转roll。
绕三个轴的旋转值pitch,yaw,roll来自航空界的叫法,翻译为俯仰角,偏航角,翻滚角,非常形象。它们不一定如上所述,一定分别代表绕x,y,z的旋转值。
从英文意思出发,roll:是卷;滚动,转动;辗的意思;
yaw是(火箭、飞机、宇宙飞船等)偏航的意思;
pitch是倾斜;投掷;搭帐篷;坠落的意思;
所以,roll的意思是翻滚,就是绕着机身所在的那个轴。yaw是偏航的意思,偏航就是绕着重力方向为轴。pitch倾斜、坠落的意思,坠落就是以翅膀所在的直线为轴发生旋转。
另外值得注意的是,pitch值是不能超过90度,这里牵扯到了万向锁的知识,不再多说,网上很多讨论。
下面这张图是以摄像机的角度来阐述欧拉角的,可以加深理解。可以看到,pitch,yaw,roll在这里并不是常见的代表绕x,y,z的旋转值。
欧拉角是表达旋转的最简单的一种方式,形式上它是一个三维向量,其值分别代表物体绕坐标系三个轴(x,y,z轴)的旋转角度。这样的话,很容易想到,同样的一个三维向量,代表了绕x,y,z的旋转值,先进行那个旋转是否对结果有影响呢?显然是有影响的,可以拿着你的手机试一下,不同的旋转顺序会代表不同的旋转结果。所以,一般引擎都会规定自己的旋转顺序。
下面三张动图形象的表示了欧拉角的旋转方式。第一张是绕x轴旋转pitch,第二张绕y轴旋转yaw,第三张是绕z轴旋转roll。
绕三个轴的旋转值pitch,yaw,roll来自航空界的叫法,翻译为俯仰角,偏航角,翻滚角,非常形象。它们不一定如上所述,一定分别代表绕x,y,z的旋转值。
从英文意思出发,roll:是卷;滚动,转动;辗的意思;
yaw是(火箭、飞机、宇宙飞船等)偏航的意思;
pitch是倾斜;投掷;搭帐篷;坠落的意思;
所以,roll的意思是翻滚,就是绕着机身所在的那个轴。yaw是偏航的意思,偏航就是绕着重力方向为轴。pitch倾斜、坠落的意思,坠落就是以翅膀所在的直线为轴发生旋转。
另外值得注意的是,pitch值是不能超过90度,这里牵扯到了万向锁的知识,不再多说,网上很多讨论。
下面这张图是以摄像机的角度来阐述欧拉角的,可以加深理解。可以看到,pitch,yaw,roll在这里并不是常见的代表绕x,y,z的旋转值。
相关文章推荐
- 【C语言】 函数指针小谈
- java dfs
- 最短路径——Floyd算法
- 备忘录模式实现画图板撤销操作
- Squares
- 使用JSONModel小记
- ---frame---收尾式动画---枚举
- 信息安全系统设计基础_exp3
- 一个java文件编译之后会产生多个class文件
- zzuoj 10409: D.引水工程
- 602B - Approximating a Constant Range (STL 贪心)
- Linux后台开发的要求
- 分支限界法
- matlab生成c和c++调用的dll文件
- Hadoop学习(二)wordcount源码详解
- 《C++ primer》英文第五版阅读笔记(十九)——位运算符,sizeof运算符和逗号运算符
- Mysql:1.登陆Mysql服务器
- laravel的依赖注入
- 状态开关按钮(ToggleButton)及按钮(Swich)的使用
- 分布式Web服务器架构