code: def cut_cross(self, x, y, radius, data):
          
          n = int(round(radius))
          ht, wd = data.shape
          x, y = int(round(x)), int(round(y))
          x0, x1 = int(max(0, x - n)), int(min(wd - 1, x + n))
          y0, y1 = int(max(0, y - n)), int(min(ht - 1, y + n))
          xarr = data[y, x0:x1 + 1]
          yarr = data[y0:y1 + 1, x]
          return (x0, y0, xarr, yarr)
docs: Cut two data subarrays that have a center at (x, y) and with
          radius (radius) from (data).  Returns the starting pixel (x0, y0)
          of each cut and the respective arrays (xarr, yarr).