/// <summary>
        /// Creates an instance of an AxisAlignedBoundingBox.
        /// </summary>
        /// <param name="positions">The <see cref="Cartesian"/> points to be contained within the bounding box.</param>
        public AxisAlignedBoundingBox(IEnumerable<Cartesian> positions)
        {
            if (positions == null)
            {
                throw new ArgumentNullException("positions");
            }

            double minimumX = double.MaxValue;
            double minimumY = double.MaxValue;
            double minimumZ = double.MaxValue;

            double maximumX = -double.MaxValue;
            double maximumY = -double.MaxValue;
            double maximumZ = -double.MaxValue;

            foreach (Cartesian position in positions)
            {
                if (position.X < minimumX)
                {
                    minimumX = position.X;
                }

                if (position.X > maximumX)
                {
                    maximumX = position.X;
                }

                if (position.Y < minimumY)
                {
                    minimumY = position.Y;
                }

                if (position.Y > maximumY)
                {
                    maximumY = position.Y;
                }

                if (position.Z < minimumZ)
                {
                    minimumZ = position.Z;
                }

                if (position.Z > maximumZ)
                {
                    maximumZ = position.Z;
                }
            }

            Cartesian minimum = new Cartesian(minimumX, minimumY, minimumZ);
            Cartesian maximum = new Cartesian(maximumX, maximumY, maximumZ);

            if (minimum.AllComponentsAreGreaterThan(maximum))
            {
                Cartesian temp = minimum;
                minimum = maximum;
                maximum = temp;
            }

            _minimum = minimum;
            _maximum = maximum;
        }
Example #2
0
        /// <summary>
        /// Creates an instance of an AxisAlignedBoundingBox.
        /// </summary>
        /// <param name="positions">The <see cref="Cartesian"/> points to be contained within the bounding box.</param>
        public AxisAlignedBoundingBox(IEnumerable <Cartesian> positions)
        {
            if (positions == null)
            {
                throw new ArgumentNullException("positions");
            }

            double minimumX = double.MaxValue;
            double minimumY = double.MaxValue;
            double minimumZ = double.MaxValue;

            double maximumX = -double.MaxValue;
            double maximumY = -double.MaxValue;
            double maximumZ = -double.MaxValue;

            foreach (Cartesian position in positions)
            {
                if (position.X < minimumX)
                {
                    minimumX = position.X;
                }

                if (position.X > maximumX)
                {
                    maximumX = position.X;
                }

                if (position.Y < minimumY)
                {
                    minimumY = position.Y;
                }

                if (position.Y > maximumY)
                {
                    maximumY = position.Y;
                }

                if (position.Z < minimumZ)
                {
                    minimumZ = position.Z;
                }

                if (position.Z > maximumZ)
                {
                    maximumZ = position.Z;
                }
            }

            Cartesian minimum = new Cartesian(minimumX, minimumY, minimumZ);
            Cartesian maximum = new Cartesian(maximumX, maximumY, maximumZ);

            if (minimum.AllComponentsAreGreaterThan(maximum))
            {
                Cartesian temp = minimum;
                minimum = maximum;
                maximum = temp;
            }

            _minimum = minimum;
            _maximum = maximum;
        }