yaw/pitch/roll这三个原来是这样旋转的

做完OGRE初级教程一,知道了yaw,pitch,roll这三个旋转的确切意思。
如果有一个人站在(0,0,0)点,面向X轴正向,头顶向上方向为Y轴正向,右手方向为Z轴正向,那么旋转角度和方向的计算方法如下:
Yaw是围绕Y轴旋转,站在(0,0,0)点的人脚下是XOZ平面,以正角度为参数是向左转,以负角度为参数是向右转。
Pitch是围绕X轴旋转,站在(0,0,0)点的人脚下是XOY平面,以正角度为参数是向右倒,以负角度为参数是向左倒。
Roll是围绕Z轴旋转,站在(0,0,0)点的人脚下是YOZ平面,以正角度为参数是向后倒,以负角度为参数是向前倒。


d3dx矩阵旋转
1:绕x轴旋转,y轴正向为0度,延x轴看向原点,顺时针旋转角度增加;
2:绕y轴旋转,x轴正向为0度,延y轴看向原点,顺时针旋转角度增加,也就是,vec[1,0,0],这样转30度后,变成vec[0.866,0,0.5];
3:绕z轴旋转,x轴正向为0度,延z轴看向原点,顺时针旋转角度增加,也就是,vec[1,0,0],这样转30度后,变成vec[0.866,0.5,0];
以上结论,都是傻子做法,用下面几个例子看出来的:
D3DXMATRIXA16 matRot0,matRot1,matRot2;
D3DXMatrixRotationX(&matRot0,D3DX_PI/6.0f);
D3DXMatrixRotationY(&matRot1,D3DX_PI/6.0f);
D3DXMatrixRotationZ(&matRot2,D3DX_PI/6.0f);

//下面链接是讲这个旋转的,不过它的矩阵是row-major矩阵,所以他说RxRyRz,performs the roll first, then the pitch, and finally the yaw,而我们用d3dx,是column-major
http://planning.cs.uiuc.edu/node102.html

注意一点,旋转是三个方向的结合,roll,pitch,yaw,其先后顺序不一样,结论完全不一样,没有对错之分,只看你应用的需要,一般游戏中操作相机时roll很少,只是yaw,pitch,而且通常,只有一个成分在作用。。。。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
根据yawpitchroll计算重力补偿力的计算公式如下: 1. 将加速度计测得的三轴加速度值$Acc_x$、$Acc_y$、$Acc_z$转换到机体坐标系中,即: $Acc_x^{body} = Acc_x^{earth}cos(pitch)sin(roll) + Acc_y^{earth}(cos(yaw)sin(pitch)sin(roll) - sin(yaw)cos(roll)) + Acc_z^{earth}(sin(yaw)sin(pitch)sin(roll) + cos(yaw)cos(roll))$ $Acc_y^{body} = Acc_x^{earth}cos(pitch)cos(roll) + Acc_y^{earth}(cos(yaw)sin(pitch)cos(roll) + sin(yaw)sin(roll)) + Acc_z^{earth}(sin(yaw)sin(pitch)cos(roll) - cos(yaw)sin(roll))$ $Acc_z^{body} = -Acc_x^{earth}sin(pitch) + Acc_y^{earth}cos(pitch)sin(yaw) + Acc_z^{earth}cos(pitch)cos(yaw)$ 其中,$Acc_x^{earth}$、$Acc_y^{earth}$、$Acc_z^{earth}$分别为加速度计测得的三轴加速度值在地球坐标系中的分量,$pitch$、$roll$、$yaw$分别为俯仰角、翻滚角、偏航角。 2. 根据机体坐标系中的加速度值$Acc_x^{body}$、$Acc_y^{body}$、$Acc_z^{body}$计算重力补偿力,即: $F_{comp,x} = m(Acc_x^{body}-g*sin(pitch))$ $F_{comp,y} = m(Acc_y^{body}-g*cos(pitch)*sin(roll))$ $F_{comp,z} = m(Acc_z^{body}-g*cos(pitch)*cos(roll))$ 其中,$m$为物体的质量,$g$为重力加速度,$F_{comp,x}$、$F_{comp,y}$、$F_{comp,z}$分别为机体坐标系中的重力补偿力在$x$、$y$、$z$三个方向上的分量。这个公式假设了传感器坐标系与地球坐标系的$z$轴方向重合。如果坐标系之间存在旋转,则需要通过yawpitchroll进行转换,才能得到正确的重力补偿力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值