zoukankan      html  css  js  c++  java
  • Unity 四元数、欧拉角、轴角 之间的互相转换

    using UnityEngine;
    
    public class RotateTest : MonoBehaviour {
        public Transform a;
        public Transform b;
        public Transform c;
        void Start()
        {
            Quaternion q1 = new Quaternion(1,2,3,4);
            Debug.Log("创建一个四元数:"+q1);//输出:(1.0, 2.0, 3.0, 4.0)
    
            Vector3 eulerAngle = q1.eulerAngles;
            Debug.Log("四元数转欧拉角:" + eulerAngle);//输出:(352.3, 47.7, 70.3)
    
            Quaternion q2 = Quaternion.Euler(eulerAngle);
            Debug.Log("欧拉角转四元数:" + q2);//输出:(-0.2, -0.4, -0.5, -0.7)
    
            Vector3 axis; float angle;
            q1.ToAngleAxis(out angle, out axis);
            Debug.Log("四元数转轴向角,旋转角度:" + angle+"旋转轴:"+axis);//输出:旋转角度:86.17744旋转轴:(0.3, 0.5, 0.8)
    
            Quaternion q3= Quaternion.AngleAxis(angle, axis);
            Debug.Log("轴向角转四元数:"+q3);//输出:(0.2, 0.4, 0.5, 0.7)
    
            //测试
            a.rotation = q1; 
            b.rotation = q2;
            c.rotation = q3; //结果:a,b,c的旋转相同,inspector面板里的Rotation都是(-7.662, 47.726, 70.346)
        }
    }
  • 相关阅读:
    c++ 01
    unix c 11
    unix c 10
    unix c 09
    unix c 08
    unix c 07
    unix c 06
    unix c 05
    unix c 04
    Petrozavodsk Summer Training Camp 2017
  • 原文地址:https://www.cnblogs.com/Jason-c/p/13711087.html
Copyright © 2011-2022 走看看