从3d位置和/或旋转获取方向矢量
问题描述:
我有一个相机,其中,我已经获得了它的3d位置和它的3d旋转(以度为单位)。坐标系如下:从3d位置和/或旋转获取方向矢量
订单是XYZ,是固有的。
- 间距
- 辊
- 偏航
(又名右/前/顶矢量)
有了这个信息,如何能够计算出向上和正面矢量?
答
偏航旋转是围绕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)
指定旋转是如何定义的。 – MBo
它现在正确更新。 –