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

本文解析了OGRE初级教程中关于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,而且通常,只有一个成分在作用。。。。


### YawPitchRoll 的概念 在三维空间中,YawPitchRoll 描述的是物体相对于三个相互垂直的坐标轴的旋转角度。 - **Yaw(偏航角)**:指的是绕着竖直轴(通常是 Z 轴,在某些情况下可能是 Y 轴)的旋转运动。这种旋转主要用于描述水平方向上的转向动作[^1]。 - **Pitch(俯仰角)**:是指沿着横侧轴(一般是 X 轴)的上下倾斜运动。这可以理解为头部向上看或向下看的动作[^2]。 - **Roll(翻滚角)**:代表沿纵轴(即物体自身的长度方向,一般对应于 Y 轴但在特定框架下可能指代其他轴向)发生的滚动变化。想象飞机翅膀的一边高一边低的状态就是典型的 roll 表现形式。 ### 应用场景 这些术语广泛应用于多个技术领域: #### 机器人学与自动化控制 对于移动机器人来说,精确测量并调整其 yawpitchroll 对保持稳定性和导航至关重要。通过传感器获取的数据可以帮助控制系统做出相应决策来维持平衡或是改变行进路线。 #### 计算机图形学和游戏开发 在游戏中模拟真实的物理行为时需要用到这三个参数。例如,在飞行模拟器或者赛车游戏中,玩家操控的角色会经历各种姿态变换,而这些都是基于 yawpitchroll 来实现逼真效果的关键因素之一。 ```cpp // C++ 示例代码展示如何设置对象的姿态 (假设使用了支持此功能的游戏引擎 API) void setObjectOrientation(float yawDegrees, float pitchDegrees, float rollDegrees){ Object->SetRotation(FRotator(pitchDegrees, yawDegrees, rollDegrees)); } ``` #### 增强现实(AR)/虚拟现实(VR) 为了提供沉浸式的体验,设备需要能够追踪用户的头部位置以及它所处的空间方位。利用内置陀螺仪和其他感应装置检测到的变化量就可以转换成相应的 yawpitch 或者 roll 数值来进行视角更新。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值