Esempio n. 1
0
 /// <summary>
 ///   <para>Returns the angle in degrees between two rotations a and b.</para>
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 public static float Angle(Quaternion a, Quaternion b)
 {
     return((float)((double)Mathf.Acos(Mathf.Min(Mathf.Abs(Quaternion.Dot(a, b)), 1f)) * 2.0 * 57.2957801818848));
 }
Esempio n. 2
0
        public static float Angle(Quaternion a, Quaternion b)
        {
            float num = Quaternion.Dot(a, b);

            return((!Quaternion.IsEqualUsingDot(num)) ? (Mathf.Acos(Mathf.Min(Mathf.Abs(num), 1f)) * 2f * 57.29578f) : 0f);
        }
Esempio n. 3
0
 public static bool operator !=(Quaternion lhs, Quaternion rhs)
 {
     return((double)Quaternion.Dot(lhs, rhs) <= 0.999998986721039);
 }
Esempio n. 4
0
 public static bool operator ==(Quaternion lhs, Quaternion rhs)
 {
     return(Quaternion.IsEqualUsingDot(Quaternion.Dot(lhs, rhs)));
 }
Esempio n. 5
0
        public static float Angle(Quaternion a, Quaternion b)
        {
            float f = Quaternion.Dot(a, b);

            return((float)Mathf.Acos(Mathf.Min(Mathf.Abs(f), 1f)) * 2f * 57.29578f);
        }
Esempio n. 6
0
 public static bool operator !=(Quaternion lhs, Quaternion rhs)
 {
     return(Quaternion.Dot(lhs, rhs) <= 0.999999f);
 }
        public static bool OrientationEqual(Quaternion a, Quaternion b)
        {
            var dot = 1 - Mathf.Abs(Quaternion.Dot(a, b));

            return(dot < 1e-4f);
        }
Esempio n. 8
0
        public object GetValue(CodeExecutor obj)
        {
            var v1 = value1?.GetValue(obj);
            var v2 = value2?.GetValue(obj);

            if (v1 is int i)
            {
                if (v2 is int j)
                {
                    return(i * j);
                }
                if (v2 is BigInteger bj)
                {
                    return(i * bj);
                }
                if (v2 is float f)
                {
                    return(i * f);
                }
                if (v2 is Vector3 v)
                {
                    return(i * v);
                }
                if (v2 is Vector3Int vi)
                {
                    return(i * vi);
                }
                if (v2 is string str)
                {
                    return(RepeatString(i, str));
                }
            }
            else if (v1 is float fi)
            {
                if (v2 is int j)
                {
                    return(fi * j);
                }
                if (v2 is BigInteger bj)
                {
                    return(fi * (float)bj);
                }
                if (v2 is float f)
                {
                    return(fi * f);
                }
                if (v2 is Vector3 v)
                {
                    return(fi * v);
                }
                if (v2 is Vector3Int vi)
                {
                    return(fi * (Vector3)vi);
                }
                if (v2 is string str)
                {
                    return(RepeatString(fi, str));
                }
            }
            else if (v1 is BigInteger bi)
            {
                if (v2 is int j)
                {
                    return(bi * j);
                }
                if (v2 is BigInteger bj)
                {
                    return(bi * bj);
                }
                if (v2 is float f)
                {
                    return((float)bi * f);
                }
                if (v2 is Vector3 v)
                {
                    return((float)bi * v);
                }
                if (v2 is Vector3Int vi)
                {
                    return((int)bi * vi);
                }
                if (v2 is string str)
                {
                    return(RepeatString((float)bi, str));
                }
            }
            else if (v1 is Vector3 vec1)
            {
                if (v2 is Vector3 vec2)
                {
                    return(Vector3.Dot(vec1, vec2));
                }
                if (v2 is Vector3Int vec2i)
                {
                    return(Vector3.Dot(vec1, vec2i));
                }

                if (v2 is int j)
                {
                    return(vec1 * j);
                }
                if (v2 is BigInteger bj)
                {
                    return(vec1 * (int)bj);
                }
                if (v2 is float f)
                {
                    return(vec1 * f);
                }

                if (v2 is Quaternion q2)
                {
                    return(q2 * vec1);
                }
            }
            else if (v1 is Vector3Int vec1i)
            {
                if (v2 is Vector3 vec2)
                {
                    return(Vector3.Dot(vec1i, vec2));
                }
                if (v2 is Vector3Int vec2i)
                {
                    return(vec1i.x * vec2i.x + vec1i.y * vec2i.y + vec1i.z * vec2i.z);
                }

                if (v2 is int j)
                {
                    return(vec1i * j);
                }
                if (v2 is BigInteger bj)
                {
                    return(vec1i * (int)bj);
                }
                if (v2 is float f)
                {
                    return((Vector3)vec1i * f);
                }

                if (v2 is Quaternion q2)
                {
                    return(q2 * vec1i);
                }
            }

            else if (v1 is Quaternion q)
            {
                if (v2 is Quaternion q2)
                {
                    return(Quaternion.Dot(q, q2));
                }

                if (v2 is Vector3 vec2)
                {
                    return(q * vec2);
                }
                if (v2 is Vector3Int vec2i)
                {
                    return(q * vec2i);
                }
            }

            return(0);
        }