从3d位置和/或旋转获取方向矢量

从3d位置和/或旋转获取方向矢量

问题描述:

我有一个相机,其中,我已经获得了它的3d位置和它的3d旋转(以度为单位)。坐标系如下:从3d位置和/或旋转获取方向矢量

订单是XYZ,是固有的。

  • 间距
  • 偏航

(又名右/前/顶矢量)

有了这个信息,如何能够计算出向上和正面矢量?

+0

指定旋转是如何定义的。 – MBo

+0

它现在正确更新。 –

偏航旋转是围绕OY(垂直)轴,并具有矩阵MY(对于CCW正)

Cos(Yaw) -Sin(Yaw) 0 
Sin(Yaw) Cos(Yaw) 0 
0   0   1 

节距旋转是围绕OZ轴线,并具有矩阵MP

Cos(Pitch) 0 Sin(Pitch) 
0   1 0 
-Sin(Pitch) 0 Cos(Yaw) 

辊旋转是围绕OX轴并且具有矩阵MR

1  0   0  
0  Cos(Roll) -Sin(Roll) 
0  Sin(Roll) Cos(Roll) 

现在必须将矩阵MP,MR,MY以正确的顺序相乘并得到矩阵M. 要找到正向矢量 - 乘以M和矢量[1,0,0]。要获得顶部方向矢量 - 将M和矢量[0,1,0]相乘。要获得侧向矢量 - 将M和矢量[1,0,0]相乘。

我现在无法检查右矩阵乘法顺序和最后一个结果。如果你有任何象Maple,Matlab这样的符号数学软件 - 试试吧。

结果应该是这样的正向

X = Cos(Pitch) * Cos(Yaw) 
Y = Sin(Pitch) 
Z = Cos(Pitch) * Sin(Yaw) 

和(可能是错误的)

X = -Cos(Yaw) * Sin(Roll) - Sin(Yaw) * Sin(Pitch) * Cos(Roll) 
Y = Sin(Yaw) * Sin(Roll) - Cos(Yaw) * Sin(Pitch) * Cos(Roll) 
Z = Cos(Pitch) * Cos(Roll)