zoukankan      html  css  js  c++  java
  • 四元素与矩阵之间相互转换

    1.矩阵转换为四元素

    public static Quaternion QuaternionFromMatrix(Matrix4x4 m)
            {
                Quaternion q = new Quaternion();
                q.w = Mathf.Sqrt(Mathf.Max(0, 1 + m[0, 0] + m[1, 1] + m[2, 2])) / 2;
                q.x = Mathf.Sqrt(Mathf.Max(0, 1 + m[0, 0] - m[1, 1] - m[2, 2])) / 2;
                q.y = Mathf.Sqrt(Mathf.Max(0, 1 - m[0, 0] + m[1, 1] - m[2, 2])) / 2;
                q.z = Mathf.Sqrt(Mathf.Max(0, 1 - m[0, 0] - m[1, 1] + m[2, 2])) / 2;
                q.x *= Mathf.Sign(q.x * (m[2, 1] - m[1, 2]));
                q.y *= Mathf.Sign(q.y * (m[0, 2] - m[2, 0]));
                q.z *= Mathf.Sign(q.z * (m[1, 0] - m[0, 1]));
                return q;
            }

    2.矩阵的构成要素

    public static Matrix4x4 CreateMatrix(Vector3 right, Vector3 up, Vector3 forward, Vector3 position)
            {
                Matrix4x4 m = Matrix4x4.identity;
                m.SetColumn(0, right);
                m.SetColumn(1, up);
                m.SetColumn(2, forward);
                m.SetColumn(3, position);
                m[3, 3] = 1;
                return m;
            }

    3.四元素转化为矩阵

    public static Matrix4x4 MatrixFromQuaternion(Quaternion q)
            {
                return CreateMatrix(q * Vector3.right, q * Vector3.up, q * Vector3.forward, Vector3.zero);
            }
  • 相关阅读:
    mysql下载与安装
    Observable Flowable Test
    Linux 技巧:让进程在后台可靠运行的几种方法
    CallBack
    Linux内存分析
    Linux安装svn
    百度地图api
    安装Mysql官方的sakila数据库
    yii2 展示静态页面
    yii2 手动安装第三方扩展
  • 原文地址:https://www.cnblogs.com/mttnor/p/11128316.html
Copyright © 2011-2022 走看看