Unity小问题:两个四元数求夹角,结果的单位是弧度还是角度?会出现负数吗?

我们可以用下面的方法求得两个四元数之间的夹角,这在求旋转角度的时候很方便

// 返回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°还继续旋转时,角度就会缩小。看来这个方法非常贴心实用,完全符合我们上学时的认识,在使用的时候不用担心那么多。

发布了3 篇原创文章 · 获赞 0 · 访问量 49

猜你喜欢

转载自blog.csdn.net/weixin_36335685/article/details/104397153