Exemplo n.º 1
0
        // Token: 0x06000397 RID: 919 RVA: 0x0000CAD4 File Offset: 0x0000ACD4
        public static Quaternion FromLookAt(Vector3D source, Vector3D destination)
        {
            Vector3D normalized = (destination - source).Normalized;
            float    num        = Vector3D.CalculateDotProduct(Vector3D.UnitZ, normalized);

            if (System.Math.Abs(num + 1f) < 1.401298E-45f)
            {
                return(new Quaternion(Vector3D.UnitY.X, Vector3D.UnitY.Y, Vector3D.UnitY.Z, 3.14159274f));
            }
            if (System.Math.Abs(num - 1f) < 1.401298E-45f)
            {
                return(Quaternion.Identity);
            }
            Vector3D normalized2 = Vector3D.CalculateCrossProduct(Vector3D.UnitZ, normalized).Normalized;
            float    angle       = (float)System.Math.Acos((double)num);

            return(Quaternion.FromAxisAngle(normalized2, angle));
        }