Example #1
0
        static public float GetDistance(this Color item, Color other)
        {
            item  = item.ConvertStraightToPremultiplied();
            other = other.ConvertStraightToPremultiplied();

            return(Mathq.Sqrt(
                       (item.R - other.R).GetSquared() +
                       (item.G - other.G).GetSquared() +
                       (item.B - other.B).GetSquared()
                       ));
        }
Example #2
0
        static public float FindLargestFixedEdgeCircleCast(Vector2 position, Vector2 direction, float distance, float maximum, int layer_mask = IntBits.ALL_BITS, float margin = Mathq.DEFAULT_SOLVE_MARGIN, int max_iterations = Mathq.DEFAULT_SOLVE_MAX_NUMBER_ITERATIONS)
        {
            if (Physics2D.Raycast(position, direction, distance, layer_mask).DidHit() == false)
            {
                if (Physics2D.CircleCast(position, maximum, direction, distance, layer_mask).DidHit() == false)
                {
                    return(maximum);
                }

                return(Mathq.FindEdge(0.0f, maximum, r => Physics2D.CircleCast(position, r, direction, distance - r, layer_mask).DidHit(), margin, max_iterations) - margin);
            }

            return(0.0f);
        }
Example #3
0
        static public float FindLargestFixedEdgeCircleFit(Vector2 position, Vector2 direction, float maximum, int layer_mask = IntBits.ALL_BITS, float margin = Mathq.DEFAULT_SOLVE_MARGIN, int max_iterations = Mathq.DEFAULT_SOLVE_MAX_NUMBER_ITERATIONS)
        {
            if (Physics2D.OverlapPoint(position, layer_mask) == null)
            {
                if (Physics2D.OverlapCircle(position + direction * maximum, maximum, layer_mask) == null)
                {
                    return(maximum);
                }

                return(Mathq.FindEdge(0.0f, maximum, r => Physics2D.OverlapCircle(position + direction * r, r, layer_mask) == null, margin, max_iterations) - margin);
            }

            return(0.0f);
        }
Example #4
0
        static public float CalculateTriangleArea(this Vector2 point1, Vector2 point2, Vector2 point3)
        {
            float a;
            float b;
            float c;

            point1.GetDistanceTo(point2).Order(
                point2.GetDistanceTo(point3),
                point3.GetDistanceTo(point1),
                out c, out b, out a
                );

            float ab = a - b;

            float t1 = a + (b + c);
            float t2 = c - ab;
            float t3 = c + ab;
            float t4 = a + (b - c);

            return(0.25f * Mathq.Sqrt(t1 * t2 * t3 * t4));
        }
Example #5
0
 static public float GetMagnitude(this Vector2 item)
 {
     return(Mathq.Sqrt(item.GetSquaredMagnitude()));
 }