为什么按这个顺序应用横滚、俯仰和偏航?

use*_*014 5 3d geometry opencv rotation

我知道应用 3d 旋转的常见方法是滚动,然后是俯仰,然后是偏航。

我知道,只要你选择了一个顺序并坚持下去,顺序并不重要。

但这似乎与直观的方式相反,如果我要求你解释你的脸面向哪里或你将相机指向哪个方向,你可能会从偏航(你看的一侧)开始,然后是俯仰(你看起来有多高\低),然后滚动(如何旋转它)。

有什么解释为什么它是常用的命令吗?

Nic*_*ler 5

首先,我想声明的是,没有通用的轮换方法。方法太多了,每种方法都有其目的。我什至认为,对于大多数情况来说,欧拉角是一个糟糕的选择。

不管怎样,你的问题可能与应用旋转的含义有关。这可以通过多种方式来完成。例如,我们可以使用旋转矩阵并将其由各个主旋转组成。如果我们有列向量,这将是:

R = Yaw * Pitch * Roll
Run Code Online (Sandbox Code Playgroud)

我们可以从左到右解释它,我们会发现这正是你所解释的(开始向左/向右看,然后向上/向下,最后倾斜你的头)。重要的是,这也会改变坐标系,我们将在其中应用后续旋转。

如果我们使用这个矩阵R来变换一个点P,那么我们将计算P' = R * P。这是:

P' = Yaw * Pitch * Roll * P
Run Code Online (Sandbox Code Playgroud)

我们也可以通过引入括号从右到左计算:

P' = Yaw * Pitch * (Roll * P)
Run Code Online (Sandbox Code Playgroud)

因此,我们可以首先Roll申请PP_Roll = Roll * P

P' = Yaw * (Pitch * P_Roll)
Run Code Online (Sandbox Code Playgroud)

,然后是俯仰,最后是偏航。然而,在这种解释中,我们将始终使用全局坐标系。

所以这只是一个视角问题。