예제 #1
0
        /// <summary>
        /// The MoveInsideContainer
        /// </summary>
        /// <param name="range">The range<see cref="RangeDouble"/></param>
        /// <param name="container">The container<see cref="RangeDouble"/></param>
        /// <returns>The <see cref="RangeDouble"/></returns>
        public static RangeDouble MoveInsideContainer(this RangeDouble range, RangeDouble container)
        {
            if (container.Contains(range))
            {
                return(range);
            }

            var length = range.Length();

            if (length > container.Length())
            {
                length = container.Length();
            }

            var rangeInside = range.Start < container.Start ? new RangeDouble(container.Start, container.Start + length) : new RangeDouble(container.End - length, container.End);

            return(rangeInside);
        }
예제 #2
0
        /// <summary>
        /// The Offset the range to the specified distance.
        /// </summary>
        /// <param name="range">The range<see cref="RangeDouble"/></param>
        /// <param name="distance">The distance<see cref="double"/></param>
        /// <param name="extentRange">The extentRange<see cref="RangeDouble"/></param>
        /// <returns>The <see cref="RangeDouble"/></returns>
        public static RangeDouble Offset(this RangeDouble range, double distance, RangeDouble extentRange)
        {
            var length = range.Length();

            if (extentRange.Length() < length)
            {
                length = extentRange.Length();
            }

            var start    = range.Start + distance;
            var end      = start + length;
            var newRange = new RangeDouble(start, end);

            if (extentRange.Contains(newRange))
            {
                return(newRange);
            }

            return(start < extentRange.Start
                ? new RangeDouble(extentRange.Start, extentRange.Start + length)
                : new RangeDouble(extentRange.End - length, extentRange.End));
        }