public static AxisAlignedBoundingBox Intersection(AxisAlignedBoundingBox boundsA, AxisAlignedBoundingBox boundsB)
{
Vector3 minXYZ = Vector3.Zero;
minXYZ.x = Math.Max(boundsA.minXYZ.x, boundsB.minXYZ.x);
minXYZ.y = Math.Max(boundsA.minXYZ.y, boundsB.minXYZ.y);
minXYZ.z = Math.Max(boundsA.minXYZ.z, boundsB.minXYZ.z);
Vector3 maxXYZ = Vector3.Zero;
maxXYZ.x = Math.Max(minXYZ.x, Math.Min(boundsA.maxXYZ.x, boundsB.maxXYZ.x));
maxXYZ.y = Math.Max(minXYZ.y, Math.Min(boundsA.maxXYZ.y, boundsB.maxXYZ.y));
maxXYZ.z = Math.Max(minXYZ.z, Math.Min(boundsA.maxXYZ.z, boundsB.maxXYZ.z));
return new AxisAlignedBoundingBox(minXYZ, maxXYZ);
}