首先,我想声明的是,没有通用的轮换方法。方法太多了,每种方法都有其目的。我什至认为,对于大多数情况来说,欧拉角是一个糟糕的选择。
不管怎样,你的问题可能与应用旋转的含义有关。这可以通过多种方式来完成。例如,我们可以使用旋转矩阵并将其由各个主旋转组成。如果我们有列向量,这将是:
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申请P:P_Roll = Roll * P
P' = Yaw * (Pitch * P_Roll)
Run Code Online (Sandbox Code Playgroud)
,然后是俯仰,最后是偏航。然而,在这种解释中,我们将始终使用全局坐标系。
所以这只是一个视角问题。