关于欧拉角heading-pitch-bank的疑问?

marcoxiong 2006-04-21 05:28:42
各位大虾好:
最近在猛补数学,手头上在看《3d数学基础:图形与游戏开发》。看完欧拉角一节后有很多疑问。
首先说两个概念:1、世界坐标通过平移转成惯性坐标 2、惯性坐标通过旋转转成物体坐标
heading绕y轴旋转,pitch绕x轴旋转,bank绕z轴旋转。

以下是疑惑:
1、书中说的heading-pitch-bank旋转是从惯性坐标转换到物体坐标,为什么不直接从物体坐标转换到惯性坐标而来个逆过程。

2、书中heading-pitch-bank的所有旋转都是对坐标系的旋转,对坐标系的旋转其实是对物体的反方向旋转。但先heading后再pitch时的旋转轴已经是经过heading旋转后的x轴,而不是以前的惯性坐标下的x轴。这里我就一直觉得此时对物体反转(pitch反方向)是绕以前惯性坐标下的x轴。这里本人很迷惑。

3、通过heading-pitch-bank后计算出惯性到物体坐标的转换矩阵M1, 及M1的逆矩阵(物体坐标到惯性坐标的转换矩阵)M2.本人重写了DX的D3DXMatrixRotationYawPitchRoll函数,使用的是M2矩阵,也即是先旋转z再旋转x最后旋转y,这个顺序不是同函数名的旋转顺序相反了吗?但如果按惯性坐标来旋转也确实是以相反的旋转顺序来旋转(zxy),若按物体本身的物体坐标来旋转就是yxz。

不知到底该如何理解才最好!

本人对欧拉角旋转确实很迷惑,希望大家多多指教一下。
谢谢!
...全文
1086 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
NeoXiong 2006-04-23
  • 打赏
  • 举报
回复
1、对于这本书中推倒出YawPitchRoll(即heading-pitch-bank)是在惯性坐标中推导的,也可以从物体坐标里推出,道理差不多。

2、推导原理时是用的旋转物体坐标系来实现的,而旋转坐标系实质上是反方向旋转物体,当heading时,反方向heading旋转物体,此时物体的物体坐标系还是没变。接下来旋转pitch,反方向pitch旋转物体,此时还是绕原物体坐标系x轴。总之,旋转物体后物体的物体坐标系没变即xyz轴没变,在这个推导中完全还是遵守“旋转坐标系实质上是反方向旋转物体”。

3、对于这点我认为这可能是种惯例,一般都是在惯性坐标下推导YawPitchRoll,因而采用这种命名。但请楼主主意一点:旋转的先后顺序有着非常大的不同,不同的旋转顺序产生的旋转效果有很大差异!
SoRoMan 2006-04-23
  • 打赏
  • 举报
回复
不太清楚这里的惯性坐标?是view/camara坐标吗?
1、书中说的heading-pitch-bank旋转是从惯性坐标转换到物体坐标,为什么不直接从物体坐标转换到惯性坐标而来个逆过程。

一样的,互逆的过程。直接从物体坐标转换到惯性坐标当然可以。

2、书中heading-pitch-bank的所有旋转都是对坐标系的旋转,对坐标系的旋转其实是对物体的反方向旋转。但先heading后再pitch时的旋转轴已经是经过heading旋转后的x轴,而不是以前的惯性坐标下的x轴。这里我就一直觉得此时对物体反转(pitch反方向)是绕以前惯性坐标下的x轴。这里本人很迷惑。

可以这样理解,惯性坐标已经位于世界坐标的原点处,所以这些旋转都相当于位于原点的物体在绕三个轴旋转,不管按什么顺序,结果都一样。

3、通过heading-pitch-bank后计算出惯性到物体坐标的转换矩阵M1, 及M1的逆矩阵(物体坐标到惯性坐标的转换矩阵)M2.本人重写了DX的D3DXMatrixRotationYawPitchRoll函数,使用的是M2矩阵,也即是先旋转z再旋转x最后旋转y,这个顺序不是同函数名的旋转顺序相反了吗?但如果按惯性坐标来旋转也确实是以相反的旋转顺序来旋转(zxy),若按物体本身的物体坐标来旋转就是yxz。

见上。
zzwu 2006-04-23
  • 打赏
  • 举报
回复
记得三个Euler角是在理论力学中学过的,
它们的中文名称分别叫转动角、进动角、章动角,
常用希腊字母φ,ψ,θ来代表。
Euler角是用来描述新旧坐标系三个对应轴的偏转的,
但大小并不是简单的旧轴-新轴之间的夹角.

marcoxiong 2006-04-22
  • 打赏
  • 举报
回复
谢谢大家的参与,首先我用的是DX左手系,其次DX下对D3DXMatrixRotationYawPitchRoll的说明为:The order of transformations is roll first, then pitch, then yaw。,即zxy。

看了happy__888([顾问团]寻开心)的回答我还是不怎么明了。因为我的问题是我以上所提到的疑惑。希望大家有更容易的办法帮助我解惑,谢谢!
zzwu 2006-04-22
  • 打赏
  • 举报
回复


~~●█〓██▄▄▄▄▄▄ ●●●●●●
▄▅██████▅▄▃▂
██████████████
◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤


漂亮极了, 够意思!

但这和欧拉角有关系吗?

papaya123 2006-04-22
  • 打赏
  • 举报
回复

~~●█〓██▄▄▄▄▄▄ ●●●●●●
▄▅██████▅▄▃▂
██████████████
◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤


都让开,大炮来了,我一炮再把LZ轰没了!
寻开心 2006-04-22
  • 打赏
  • 举报
回复
欧拉角,也是姿态角
heading是方向向量在xoy平面投影和x轴的夹角
pitch是方向向量和xoy平面的夹角
roll是围绕方向向量的滚动角度

欧拉角到旋转矩阵的变换关系是 yxz 还是 zxy 和矩阵的乘法的顺序有关系
在opengl当中是右乘,在dx当中是左乘
矩阵在左边还是在右边,决定了作用的先后顺序
初始假定的是正方向是y方向
实际的应用顺序应该先围绕y来滚动roll,然后围绕x旋转pitch,最后是围绕z旋转heading角度
这个就是从欧拉角到世界坐标系坐标的变换矩阵的生成方式

8,325

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧