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