yaw公式_3D视角旋转矩阵yawpitchroll(pan,tilt)的数学计算

更新时间:2023-06-17 10:56:16 阅读: 评论:0

yaw公式_3D视⾓旋转矩阵yawpitchroll(pan,tilt)的数学计算⼀、 yaw pitch roll  含义
yaw:  ⽔平偏航转⾓  (绕Y轴旋转,  Y轴向上)
pitch: 上下俯仰转⾓ (绕X轴 旋转,  X轴向右)
roll:    旋转⾓(绕Z轴 旋转,  Z轴向前)
Direct3D 左⼿坐标
⼆、旋转矩阵、视⾓矩阵、yaw-pitch-roll的关系
1.  D3DXMatrixRotationYawPitchRoll 函数,
计算顺序不印度留学中介
there were ros是 yaw, pitch, roll .  ⽽是 pitch, yaw。
注意: 第⼀个 旋转计算 完毕之后, 第⼆个旋转的参考轴仍然是全局坐标,  ⽽不是⾃⾝参考轴。
D3DXMATRIXA16 mx_xlib;
D3DXMATRIXA16 mx_pitch_first;
D3DXMATRIXA16 mx_yaw_first;2010安徽高考英语答案
D3DXMATRIXA16 mx_yaw, mx_pitch;
float yaw, pitch, roll =0.0f;
alike是什么意思yaw= D3DX_PI/6;
pitch= D3DX_PI/3;soon的意思
TRACE( "yaw: %f pitch: %f\n", yaw, pitch );
D3DXMatrixRotationYawPitchRoll( &mx_xlib, yaw, pitch, roll );
D3DXMatrixRotationY( &mx_yaw, yaw );
D3DXMatrixRotationX( &mx_pitch, pitch );
mx_pitch_first = mx_pitch * mx_yaw ;
mx_yaw_first = mx_yaw * mx_pitch ;
上述代码结果: mx_pitch_first== mx_xlib.    但是 mx_yaw_first 与 mx_xlib 不同
如果 yaw ⼀定在前⾯, 则 pitch 使⽤⾃⾝参考轴, 见如下代码:
D3DXMATRIXA16 mx_yp_local;
D3DXMATRIXA16 mx_local_pitch;
D3DXVECTOR3 vAxisX( 1.0, 0, 0 );
D3DXVECTOR3 vLocalX;
D3DXVec3TransformCoord( &vLocalX, &vAxisX, &mx_yaw );
D3DXMatrixRotationAxis( &mx_local_pitch, &vLocalX, pitch );
mx_yp_local = mx_yaw * mx_local_pitch ;
结果相同: mx_yp_local ==  mx_xlib.
2.  D3DXMatrixRotationYawPitchRoll ⽣成的旋转矩阵  不等于  摄像的视⾓矩阵。
视⾓矩阵是通过 旋转⼀个标准  z轴单位向量( 0,0,1) , 再通过 两个点 来 确定 视⾓矩阵。 代码见下:D3DXVECTOR3 vUp  (0,1,0);
D3DXVECTOR3 vZero(0,0,0);
冒名顶替农家女上学者被解聘D3DXVECTOR3 vZ(0,0,1.0f);
D3DXVECTOR3 vNewZ;
D3DXMATRIX mRotView;
D3DXVec3TransformCoord( &vNewZ, &vZ, &d_xlib );
D3DXMatrixLookAtLH( &mRotView, &vZero, &vNewZ, & vUp );interpreter
3. 视⾓矩阵 ==>  计算 yaw, pitch, roll
D3DXMATRIX mInvView;
D3DXMatrixInver( &mInvView, NULL, &mRotView );
// The axis basis vectors and camera position are stored inside the
// position matrix in the 4 rows of the camera's world matrix.
// To figure out the yaw/pitch of the camera, we just need the Z basis vector
D3DXVECTOR3* pZBasis = (D3DXVECTOR3*) &mInvView._31;
float fCameraYawAngle = atan2f( pZBasis->x, pZBasis->z );
float fLen = sqrtf(pZBasis->z*pZBasis->z + pZBasis->x*pZBasis->x);
float fCameraPitchAngle = -atan2f( pZBasis->y, fLen );
牛津大学公开课三、云台pan-tilt-zoom
云台 ⽀持 pan, tilt, zoom,focus 四个参数,常⽤前三个,简称PTZ.
云台⼀般只能 ⽔平(pan),上下(tilt)动作。
不⽀持旋转。
对于Pan, tilt 构造 旋转矩阵 次序
cfp
1. tilt[全局 x 轴] -> Pan [全局轴 y ]
2. Pan [全局轴 y轴]-> tilt [⾃⾝轴 x 轴]
和 yaw pitch roll 概念, 完全相同。
四、补充
1.  对于旋转矩阵, 它的逆矩阵 和 转置矩阵 是相同。 所以可以⽤ 旋转矩阵 直接 变换 ⽅向⽮量。
2.  视⾓矩阵 虽然 和 yaw-pitch-roll 不同, 但是其实就是 逆(或转置) 的关系。
3. 如果⼀个 先yaw, 后pitch的视⾓矩阵 (全局轴) ==> 计算  yaw, pitch  , 见下式。
D3DXMATRIX mInvView;
D3DXMatrixInver( &mInvView, NULL, &mRotView );
// The axis basis vectors and camera position are stored inside the
/9518
/ position matrix in the 4 rows of the camera's world matrix.
// To figure out the yaw/pitch of the camera, we just need the Z basis vector D3DXVECTOR3* pZBasis = (D3DXVECTOR3*) &mInvView._31;
float fYawFirst_PitchAngle  = -atan2f( pZBasis->y, pZBasis->z );
float fYawFirst_Len = sqrtf(pZBasis->z*pZBasis->z + pZBasis->y*pZBasis->y); float fYawFirst_YawAngle = atan2f( pZBasis->x, fYawFirst_Len );

本文发布于:2023-06-17 10:56:16,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/148118.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   旋转   云台   计算   全局
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图