提问人:Lagerat 提问时间:10/4/2023 最后编辑:Lagerat 更新时间:10/4/2023 访问量:89
将四元数转换为 3D 编辑器的角度
Converting quaternions to angles for a 3D editor
问:
我有一个 3D 地图编辑器,对象使用四元数旋转,但用户还可以使用文本框设置角度。我需要正确地从角度转换为四元数并返回
我尝试使用欧拉角,但它们存在奇异性问题。Y 的限制从 -90 到 90,非常不方便。有哪些方法可以控制物体的旋转,以便用户可以更改特定的角度度数。在虚幻引擎 unity 中这是如何完成的?
这是我现在使用的代码
double sinr_cosp = 2 * (q.W * q.X + q.Y * q.Z);
double cosr_cosp = 1 - 2 * (q.X * q.X + q.Y * q.Y);
double Xn = System.Math.Atan2(sinr_cosp, cosr_cosp);
//pitch / y
double Yn;
double sinp = 2 * (q.W * q.Y - q.Z * q.X);
if (System.Math.Abs(sinp) >= 1)
{
Yn = System.Math.PI / 2 * (float)System.Math.Sign(sinp);
}
else
{
Yn = System.Math.Asin(sinp);
}
//yaw / z
double siny_cosp = 2 * (q.W * q.Z + q.X * q.Y);
double cosy_cosp = 1 - 2 * (q.Y * q.Y + q.Z * q.Z);
double Zn = System.Math.Atan2(siny_cosp, cosy_cosp);
答: 暂无答案
评论