Exemplo n.º 1
0
        /// <summary>
        /// Calculate the difference between two ranges, i.e. X - Y.
        /// </summary>
        /// <param name="x">The first range to subtract from.</param>
        /// <param name="y">The second range to subtract with.</param>
        /// <returns>Between 0 and 2 remaining ranges.</returns>
        public static FInt32Range[] Difference(FInt32Range x, FInt32Range y)
        {
            if (x.Overlaps(y))
            {
                FInt32Range lowerRange = new FInt32Range(x.LowerBound, FInt32RangeBound.FlipInclusion(y.LowerBound));
                FInt32Range upperRange = new FInt32Range(FInt32RangeBound.FlipInclusion(y.UpperBound), x.UpperBound);

                if (!lowerRange.IsEmpty())
                {
                    if (!upperRange.IsEmpty())
                    {
                        return(new FInt32Range[] { lowerRange, upperRange });
                    }
                    else
                    {
                        return(new FInt32Range[] { lowerRange });
                    }
                }

                if (!upperRange.IsEmpty())
                {
                    return(new FInt32Range[] { upperRange });
                }

                return(new FInt32Range[0]);
            }
            else
            {
                return(new FInt32Range[] { x });
            }
        }