public AxisAlignedBoundingBox GetIntersection(AxisAlignedBoundingBox other)
        {
            var intersection = new AxisAlignedBoundingBox();

            intersection.MinXYZ.X = Math.Max(this.MinXYZ.X, other.MinXYZ.X);
            intersection.MinXYZ.Y = Math.Max(this.MinXYZ.Y, other.MinXYZ.Y);
            intersection.MinXYZ.Z = Math.Max(this.MinXYZ.Z, other.MinXYZ.Z);

            intersection.MaxXYZ.X = Math.Min(this.MaxXYZ.X, other.MaxXYZ.X);
            intersection.MaxXYZ.Y = Math.Min(this.MaxXYZ.Y, other.MaxXYZ.Y);
            intersection.MaxXYZ.Z = Math.Min(this.MaxXYZ.Z, other.MaxXYZ.Z);

            if (intersection.MinXYZ.X >= intersection.MaxXYZ.X ||
                intersection.MinXYZ.Y >= intersection.MaxXYZ.Y ||
                intersection.MinXYZ.Z >= intersection.MaxXYZ.Z)
            {
                return(AxisAlignedBoundingBox.Zero());
            }

            return(intersection);
        }