N = 30  # number of grid intervals on the unit sphere
rmax = 1.5  # line length
x0 = [0, 0, 0]  # set object at this position
#############################################################

shape = load(datadir + 'pumpkin.vtk').normalize().pos(x0).lineWidth(.1)

show(shape, at=0, N=2, bg='w', axes={'zxGrid': False})

############################################################
# cast rays from the center and find intersections
agrid, pts = [], []
for th in np.linspace(0, np.pi, N, endpoint=False):
    lats = []
    for ph in np.linspace(0, 2 * np.pi, N, endpoint=False):
        p = spher2cart(rmax, th, ph)
        intersections = shape.intersectWithLine([0, 0, 0], p)  #
        if len(intersections):
            value = mag(intersections[0])
            lats.append(value)
            pts.append(intersections[0])
        else:
            lats.append(rmax)
            pts.append(p)
    agrid.append(lats)
agrid = np.array(agrid)

grid = pyshtools.SHGrid.from_array(agrid)
clm = grid.expand()
grid_reco = clm.expand(lmax=lmax)  # cut "high frequency" components
rmax = 2.0      # line length
x0 = [0, 0, 0]  # set object at this position
#############################################################

shape = load(datadir + "pumpkin.vtk").normalize().pos(x0).lineWidth(.1)

show(shape, at=0, N=2, bg='w')


############################################################
# cast rays from the center and find intersections
agrid, pts = [], []
for th in np.linspace(0, np.pi, N, endpoint=True):
    lats = []
    for ph in np.linspace(0, 2*np.pi, N, endpoint=True):
        p = spher2cart(rmax, th, ph)
        intersections = shape.intersectWithLine([0, 0, 0], p)  # <--------------
        if len(intersections):
            value = mag(intersections[0])
            lats.append(value)
            pts.append(intersections[0])
        else:
            lats.append(rmax)
            pts.append(p)
    agrid.append(lats)
agrid = np.array(agrid)


############################################################
# Please install pyshtools to continue this example
# Follow instructions at https://shtools.oca.eu/shtools