UnityEditor.MathUtils.GetQuatLog C# (CSharp) Method

GetQuatLog() public static method

public static GetQuatLog ( Quaternion q ) : Quaternion
q UnityEngine.Quaternion
return UnityEngine.Quaternion
        public static Quaternion GetQuatLog(Quaternion q)
        {
            Quaternion quaternion = q;
            quaternion.w = 0f;
            if (Mathf.Abs(q.w) < 1f)
            {
                float f = Mathf.Acos(q.w);
                float num2 = Mathf.Sin(f);
                if (Mathf.Abs(num2) > 0.0001)
                {
                    float num3 = f / num2;
                    quaternion.x = q.x * num3;
                    quaternion.y = q.y * num3;
                    quaternion.z = q.z * num3;
                }
            }
            return quaternion;
        }

Usage Example

示例#1
0
        public static Quaternion GetSquadIntermediate(Quaternion q0, Quaternion q1, Quaternion q2)
        {
            Quaternion quatConjugate = MathUtils.GetQuatConjugate(q1);
            Quaternion quatLog       = MathUtils.GetQuatLog(quatConjugate * q0);
            Quaternion quatLog2      = MathUtils.GetQuatLog(quatConjugate * q2);
            Quaternion q3            = new Quaternion(-0.25f * (quatLog.x + quatLog2.x), -0.25f * (quatLog.y + quatLog2.y), -0.25f * (quatLog.z + quatLog2.z), -0.25f * (quatLog.w + quatLog2.w));

            return(q1 * MathUtils.GetQuatExp(q3));
        }
All Usage Examples Of UnityEditor.MathUtils::GetQuatLog