给定初始和目标位置以及初始滚动、俯仰和偏航角,计算目标滚动、俯仰和偏航角

Compute target roll, pitch and yaw angles given initial and target positions and intial roll, pitch and yaw angles

我有一个模型可以在模拟世界中移动。操作框架是右手的,X - 向前,Y - 左,Z - 上。

我知道当前位置 P1 (x1, y1, z1) 和当前 RPY 角度 (R1, P1, Y1)。我有一个目标位置,P2 (x2, y2, z2)。我想将我的模型从 P1 移动到 P2。我一直在计算目标 RPY 角度。我希望我的模型首先从 P1 到 P2 的方向掉头,然后朝那个方向移动以达到目标。

根据上述信息,我如何计算目标 RPY 角度 (R2, P2, Y2)

  • 计算方向向量D = P2 - P1 = (x2 - x1, y2 - y1, z2 - z1)

  • 音高P2 = asin(Dz / |D|)

  • 偏航Y2 = atan2(Dy, Dx)

(NB 可以使用 P2 = atan2(Dz, sqrt(Dx^2 + Dy^2)) 代替球形极点附近的更强健壮性)