Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="point">
        ///     An n-dimensional point for one "corner".
        /// </param>
        /// <param name="vector">
        ///     An n-dimensional vector to the opposite "corner".
        /// </param>
        public Box(IPoint <T> point, IVector <T> vector)
        {
            int dimensions = point.Dimensions;

            if (dimensions != vector.Dimensions)
            {
                throw new ArgumentException("The point and the vector must agree on dimensionality.");
            }

            _intervals = new Interval <T> [dimensions];
            for (int dimension = 0; dimension < dimensions; dimension++)
            {
                dynamic start = point.GetCoordinate(dimension);
                dynamic end   = start + vector.GetDelta(dimension);
                if (start <= end)
                {
                    _intervals[dimension] = new Interval <T>(start, true, end, true);
                }
                else
                {
                    _intervals[dimension] = new Interval <T>(end, true, start, true);
                }
            }
        }