zoukankan      html  css  js  c++  java
  • 矩阵分解[提取Position/Rotation/Scale]

    基于Unity Matrix4x4的矩阵分解,当然不能将投影矩阵分解成 Position等,具体可以参考 XNA 的矩阵分解

    using VEC1 = System.Single;
    using VEC2 = UnityEngine.Vector2;
    using VEC3 = UnityEngine.Vector3;
    using VEC4 = UnityEngine.Vector4;
    using QUAT = UnityEngine.Quaternion;
    using MTX = UnityEngine.Matrix4x4;
    
    public static VEC3 GetPosition(MTX mtx)
    {
        return mtx.GetColumn(3);
    }
    
    public static QUAT GetRotation(MTX mtx)
    {
        return QUAT.LookRotation(mtx.GetColumn(2), mtx.GetColumn(1));
    }
    
    public static VEC3 GetScale(MTX mtx)
    {
        return new VEC3(
            mtx.GetColumn(0).magnitude,
            mtx.GetColumn(1).magnitude,
            mtx.GetColumn(2).magnitude);
    }

    夹带私货 一些常用的数学代码

    public static VEC1 Vector2Angle(VEC2 v)
    {
        //使用 LookAt
        //v = v.normalized;
        //var rotate = Vector3.Cross(Vector3.forward, v);
        //var lootRot = Quaternion.LookRotation(Vector3.forward, rotate);
        //return lootRot.eulerAngles.z;
           
        var rad = Mathf.Atan2(v.y, v.x);
        var deg = rad * Mathf.Rad2Deg;
        return deg;
    }
  • 相关阅读:
    F. The Treasure of The Segments
    D. Zigzags
    C. Binary String Reconstruction
    B. RPG Protagonist
    中国计量大学同步赛补题
    Teacher Ma专场补题
    2020ICPC上海站总结&补题
    华东202011月赛补题
    算法学习之旅——树状数组
    迷宫
  • 原文地址:https://www.cnblogs.com/godzza/p/10992408.html
Copyright © 2011-2022 走看看