欧拉角(Euler Angles)
来源:互联网 发布:龙巫捏脸数据 编辑:程序博客网 时间:2024/05/16 11:14
【原文来自:http://blog.csdn.net/zhang11wu4/article/details/47754035】
欧拉角
Written by Paul BourkeJune 2000
通用旋转矩阵中欧拉角的萃取
by R.D. Kriz (2006).
在不同坐标系的转换过程中经常要用到坐标轴的旋转。在这里用到的是右手笛卡尔空间直角坐标系(y轴指向前方,x轴指向右方,z轴指向上方),为了方便描述关于不同数轴的旋转,我们将使用不同的术语。 我们约定关于z轴的旋转叫做扭转(direction),关于y轴的旋转叫做翻转 (roll) ,关于x轴的旋转叫做推转(pitch) 。进一步,我们约定正旋转为顺时针(从数轴正方向看原点),负旋转为逆时针。更多的约定读者可以自行处理。
注意下面给出的三个旋转矩阵看起来并不是对称的关于x轴旋转tx 度(或者说推转tx 度):
关于y轴旋转 ty 度(或者说翻转 ty 度)
关于z轴旋转 tz 度(或者说扭转 tz 度)
在使用这些转换矩阵是,转换矩阵之间的次序是非常重要的。我们把以上的旋转矩阵分别叫做Rx(t), Ry(t), 和 Rz(t),当他们以次序一:Rz(t) Rx(t) Ry(t)执行旋转,或者以次序二 Rx(t) Ry(t) Rz(t)执行旋转,将会得到不同的结果。以下将会讨论其中一种矩阵的旋转次序,同理可得剩下的矩阵次序组合,这些将留个读者自行推导。我们要讨论的次序是:先翻转(关于y轴旋转),在推转(关于x轴旋转),最后扭转(关于z轴旋转)。这个也可能是在游戏或者飞行模拟中最常用的次序。
写成单个矩阵A(矩阵结合后)就是:
另外一个要求是:给定一个新的坐标系,如何去推导相对应的三个欧拉角。如果新坐标系的正交向量(正交向量是指所有向量之间两两垂直)是X,Y,Z 那么从从坐标系 (1,0,0), (0,1,0), (0,0,1) 到新坐标系的转换矩阵B就是:
所以:
又有:
所以:
最后有:
所以:
注意:
以上用到的函数 atan2() 需要两个参数来计算正确的象限结果。它和代数的tan()函数有所不同。
当赋予指定的值给以上 tx, ty,和 tz 时,存在多个不同的解。也就是说,对于同一个坐标系转换,存在多个不同的欧拉角组合解。
- 欧拉角(Euler angles)
- 欧拉角(Euler Angles)
- 欧拉角(Euler angles)
- 关于Euler angles(欧拉角)的问题
- Rotation Matrix To Euler Angles
- Gimbal Lock(万向节锁)在 Euler Angles(欧拉角)中的体现
- Computing Euler angles from a rotation matrix (翻译)
- THREE.Euler()欧拉角
- Euler
- OpenGL Angles to Axes
- jrMz and angles
- jrMz and angles
- HDU jrmz and angles
- jrMz and angles
- jrMz and angles 暴力
- Be careful about the angles
- The End of 3-Angles
- BC-水题 jrMz and angles
- java 修改ini文件
- Android-贝塞尔曲线应用
- hadoop入门教程及其实例代码
- AS3 小知识点复习 getTimer() 和 Date时间戳相关知识
- 【LeetCode】242. Valid Anagram(考察算法优化)
- 欧拉角(Euler Angles)
- 英文条码创建/打印/java调windows API(方向)1
- LDAP 中DN、CN、DC的含义
- 超级好用的安卓手机助手
- 活动的启动模式
- MornUI的List组件渲染和添加滚动条
- ios 关于非arc 工程转arc
- 周末分享——什么才算是活到点子上(转)
- WebStorm 11 激活