【发布时间】:2019-06-11 05:05:48
【问题描述】:
我做了很多研究,但真的找不到我应该如何使用四元数来执行以下操作:
我有源方向和目标方向,我试图找到从一个方向到另一个方向的特定角度(例如 10 度)的四元数。
我正在尝试理解四元数并且也想避免万向节锁定,所以我需要一个不需要转换为欧拉角的答案。
我知道有 Slerp 功能,但它就像一个“百分比”而不是一个角度。另外我不确定如何找到源和目标之间的区别。
基本上我正在尝试执行以下操作,但使用四元数而不是向量:
Vector3 source, target; //Lets pretend they are defined
Vector3 vect_dir = target - source;
float vect_length = Mathf.Min(10f * Time.deltaTime, vect_dir.magnitude);
Vector3 answer = vect_dir.normalized * vect_length;
有人知道如何对四元数做同样的事情吗?这个想法是设置我选择的速度值(示例中为 10)。 它与使用 Slerp 功能非常相似,只是我想要一个恒定的运动,而不是一个快速而逐渐减慢的运动。由于万向节锁定,我也想避免使用欧拉角。
【问题讨论】:
标签: c# unity3d quaternions