def METHOD_NAME(box_size, width, points, r_max, periodic=True):
    """
    Does voxelization by doing an aperiodic fft of the sphere over the
    points on the grid in 3 dimensions
    Args:
        box_size (float):
            Length of the (assuemd cubic) box for the calculation.
        width (int):
            Number of grid spaces in each direction of the box
        points (:np.ndarray: (N, 3)):
            Points within the box to compute the voxelization of
        r_max (float):
            Radius of the spheres centered at each point
        periodic (bool):
            True if the box should be considered periodic
    """
    eff_rad = r_max / box_size * width
    # enlarge the box for the fft by adding more segments of the same length
    # we will cut the extra off later so the fft will be aperiodic.
    buf_size = 0 if periodic else int(round(eff_rad + 1))
    new_width = 2 * buf_size + width
    # make the grid with the points on it
    arr = _put_points_on_grid(points, new_width, box_size, width, buf_size, ndim=2)
    # make the sphere
    sphere = _make_sphere_2d(new_width, eff_rad)
    # do the ffts
    fft_arr = np.fft.fft2(arr) * np.fft.fft2(sphere)
    image = np.rint(np.real(np.fft.ifft2(fft_arr))).astype(np.uint32)
    # get rid of the buffer
    if not periodic:
        image = image[buf_size:-buf_size, buf_size:-buf_size]
    # set the overlaps to 1, instead of larger integers
    np.clip(image, 0, 1, out=image)
    return image