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);
            }
  • 相关阅读:
    Java EE 经验
    Java界面设计 Swing(1)
    Java开源库
    Java Abstract Class & Interface
    Selenium WebDriver Code
    Json在PHP与JS之间传输
    Live YUV420 和 OpenCV Mat 的互相转换
    Visual C++ 升级到 Visual Studio
    Sentiment Analysis resources
    C# XMLDocument
  • 原文地址:https://www.cnblogs.com/mttnor/p/11128316.html
Copyright © 2011-2022 走看看