我们可以用下面的方法求得两个四元数之间的夹角,这在求旋转角度的时候很方便
// 返回Rotation a 和 Rotation b 之间的夹角,用度数表示
float Quaternion.Angle(Quaternion a, Quaternion b)
看来文档已经写明了是角度了,我这是白费功夫了呢。那么这个角度会有正负之分吗?或者说两个Rotation谁在前谁在后会影响结果吗?我们做向量计算的时候知道是有正负之分的,那这个方法的结果呢?
来看一下简单的测试
using UnityEngine;
public class TestQuaternionAngle : MonoBehaviour
{
public Transform object1;
public Transform object2;
private float angle = 0f;
void Update()
{
if (object1 != null && object2 != null)
{
angle = Quaternion.Angle(object1.rotation, object2.rotation);
}
}
private void OnGUI()
{
GUILayout.Label("Two object's angle is " + angle.ToString());
}
}
没有动图,我直接说结果了。从测试来看,无论两个立方体如何旋转,角度都是正数,单位是度。另外,当角度增大到180°还继续旋转时,角度就会缩小。看来这个方法非常贴心实用,完全符合我们上学时的认识,在使用的时候不用担心那么多。