zoukankan      html  css  js  c++  java
  • 四元数的运用与总结

    using UnityEngine;
    
    public class Hamilton1843 : MonoBehaviour //★哈密尔顿1843
    {
        public enum TurnStyle //▲旋转风格
        {
            None, //----------------△无旋转
            Euler, //---------------△欧拉角
            LookRotation, //--------△注视旋转
            AngleAxis, //-----------△角度轴
            FromToRotation, //------△旋转到
        }
        public TurnStyle turnStyle; //---------●旋转风格
    
        public bool isInverse = false; //------●旋转朝向取逆判定
        
        void Update ()
        {//■更新■
            InputDetection(); //模糊输入检测,进行用户测试输入判定
            
            Quaternion rotation = new Quaternion(); //四元数角度缓存
            switch (turnStyle) //根据旋转风格判定
            {
                case TurnStyle.None://----------------△无旋转
                    rotation = Quaternion.identity;
                    break;
    
                case TurnStyle.Euler://---------------△欧拉角
                    rotation = Quaternion.Euler(-90, 0, 0);
                    break;
    
                case TurnStyle.LookRotation://--------△注视旋转
                    rotation = Quaternion.LookRotation(Vector3.up, Vector3.up);
                    break;
    
                case TurnStyle.AngleAxis://-----------△角度轴
                    rotation = Quaternion.AngleAxis(-90, Vector3.right);
                    break;
    
                case TurnStyle.FromToRotation://------△同向
                    rotation = Quaternion.FromToRotation(Vector3.up, Vector3.back);
                    break;
    
            }
            //应用旋转,并顺便判定顺逆
            transform.rotation = isInverse ? Quaternion.Inverse(rotation) : rotation;
        }
    
        void InputDetection()
        {//■模糊输入检测■
            if (Input.inputString != "") //如果有输入
            {
                char c = Input.inputString[0]; //获取输入的首字符
                if (c >= 48 && c <= 57) //如果按下的是 0~9
                {
                    int i = int.Parse(Input.inputString); //字符串转整数
                    if (i >= 0 && i <= 4) //如果按下的是 0~4
                    {
                        turnStyle = (TurnStyle)i; //强转输入为旋转风格
                    }
                }
                else if (c == 32) //如果按下的是 空格键
                {
                    isInverse = !isInverse; //切换取反
                }
            }
        }
    }
  • 相关阅读:
    C++内存管理
    GitHub 简单用法
    Tembin
    git
    js 插件使用总结
    cas sso
    Redis实战
    全面分析 Spring 的编程式事务管理及声明式事务管理
    mybatis
    b2b
  • 原文地址:https://www.cnblogs.com/WindMan/p/9050517.html
Copyright © 2011-2022 走看看