Exemplo n.º 1
0
        // Token: 0x0600039E RID: 926 RVA: 0x0000CD04 File Offset: 0x0000AF04
        public static Quaternion Slerp(Quaternion start, Quaternion end, float percentage)
        {
            float num = Quaternion.CalculateDotProduct(start, end);

            if (num < 0f)
            {
                num = -num;
                end = -end;
            }
            if (1f - num > 1.401298E-45f)
            {
                float    num2     = (float)System.Math.Acos((double)num);
                Vector3D vector3D = new Vector3D((float)System.Math.Sin((double)(num2 * (1f - percentage))), (float)System.Math.Sin((double)(num2 * percentage)), (float)System.Math.Sin((double)num2));
                return(new Quaternion((start.x * vector3D.X + end.x * vector3D.Y) / vector3D.Z, (start.y * vector3D.X + end.y * vector3D.Y) / vector3D.Z, (start.z * vector3D.X + end.z * vector3D.Y) / vector3D.Z, (start.w * vector3D.X + end.w * vector3D.Y) / vector3D.Z));
            }
            return(Quaternion.Lerp(start, end, percentage));
        }