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;
    }
  • 相关阅读:
    beta冲刺(6/7)
    beta冲刺(5/7)
    beta冲刺(4/7)
    beta(3/7)
    beta冲刺(2/7)
    beta冲刺(1/7)
    团队项目测评博客
    东华理工18级计科五班团队作业六
    东华理工18级计科五班团队作业五
    东华理工18级计科五班团队作业四
  • 原文地址:https://www.cnblogs.com/godzza/p/10992408.html
Copyright © 2011-2022 走看看