A fast 3D range object. Models an axis aligned box between two points. Because it uses single precision in can using System.Numerics.Vectors Vector3 class which is very fast.
        public bool Intersects(Range3Single other)
        {
            if (XMax < other.XMin)
            {
                return(false);
            }
            if (YMax < other.YMin)
            {
                return(false);
            }
            if (ZMax < other.ZMin)
            {
                return(false);
            }

            if (XMin > other.XMax)
            {
                return(false);
            }
            if (YMin > other.YMax)
            {
                return(false);
            }
            if (ZMin > other.ZMax)
            {
                return(false);
            }

            return(true);
        }
        public Range3Single Intersect(Range3Single other)
        {
            var xrange = XRange.Intersect(other.XRange);
            var yrange = YRange.Intersect(other.YRange);
            var zrange = ZRange.Intersect(other.ZRange);

            return(new Range3Single
                       (new Vector3(xrange.Min, yrange.Min, zrange.Min),
                       new Vector3(xrange.Max, yrange.Max, zrange.Max)));
        }
 public bool Equals(Range3Single other)
 {
     return(P0.Equals(other.P0) && P1.Equals(other.P1));
 }
 public bool Equals(Range3Single other)
 {
     return P0.Equals(other.P0) && P1.Equals(other.P1);
 }
        public Range3Single Intersect(Range3Single other)
        {
            var xrange = XRange.Intersect(other.XRange);
            var yrange = YRange.Intersect(other.YRange);
            var zrange = ZRange.Intersect(other.ZRange);
            return new Range3Single
                (new Vector3(xrange.Min, yrange.Min, zrange.Min),
                 new Vector3(xrange.Max, yrange.Max, zrange.Max));

        }
        public bool Intersects(Range3Single other)
        {
            if (XMax < other.XMin)
                return false;
            if (YMax < other.YMin)
                return false;
            if (ZMax < other.ZMin)
                return false;

            if (XMin > other.XMax)
                return false;
            if (YMin > other.YMax)
                return false;
            if (ZMin > other.ZMax)
                return false;

            return true;
        }