给定一组欧拉角(Pitch、Yaw、Roll)如何找到描述相同 3D 方向的替代集?
Given a set of Euler Angles, (Pitch, Yaw, Roll) how to find alternate set that describes same 3D orientation?
我有一个很好的四元数到欧拉方程,它有时会返回一组不直观的角度。
例如:
- 间距:129
- 偏航:-85
- 投掷:126
我想以编程方式找到交替旋转,使 Pitch 和 Roll 介于 -90 和 90 之间。Yaw 可以是 0 到 360。
[编辑]俯仰限制为 -90 到 +90,滚动限制为 -180 到 +180。
基本上,您要防止方向超出极点。这很容易做到:
首先,检查俯仰是否超出极点(即大于90°或小于-90°)。在这种情况下,请执行以下操作:
add 180° to yaw
add 180° to roll
set new pitch to 180° - old pitch (or -180° - old pitch in the case of south pole)
基本上就这些了。您还可以按如下方式调整新角度:
while(yaw < 0)
yaw += 360
while(yaw > 360)
yaw -= 360
while(roll < -180)
roll += 360
while(roll > 180)
roll -= 360
我有一个很好的四元数到欧拉方程,它有时会返回一组不直观的角度。
例如:
- 间距:129
- 偏航:-85
- 投掷:126
我想以编程方式找到交替旋转,使 Pitch 和 Roll 介于 -90 和 90 之间。Yaw 可以是 0 到 360。
[编辑]俯仰限制为 -90 到 +90,滚动限制为 -180 到 +180。
基本上,您要防止方向超出极点。这很容易做到:
首先,检查俯仰是否超出极点(即大于90°或小于-90°)。在这种情况下,请执行以下操作:
add 180° to yaw
add 180° to roll
set new pitch to 180° - old pitch (or -180° - old pitch in the case of south pole)
基本上就这些了。您还可以按如下方式调整新角度:
while(yaw < 0)
yaw += 360
while(yaw > 360)
yaw -= 360
while(roll < -180)
roll += 360
while(roll > 180)
roll -= 360