"""Probe image intensities along a set of radii"""
from vedo import Image, dataurl, Circle, Lines, show
from vedo.pyplot import plot
import numpy as np

img = Image(dataurl+'images/spheroid.jpg')
cpt = [580,600,0]
circle = Circle(cpt, r=500, res=36).wireframe()

pts = circle.points                   # 3d coords of the points of the circle
centers = np.zeros_like(pts) + cpt    # create the same amount of center coords
lines = Lines(centers, pts, res=50)   # create Lines with 50 pts of resolution each

lines.interpolate_data_from(img, n=3) # interpolate all msh data onto the lines
print(lines.pointdata)                # print all available arrays
rgb = lines.pointdata['JPEGImage']    # extract the rgb intensities
intensities = np.sum(rgb, axis=1)     # sum the rgb values into one single intensity
intensities_ray = np.split(intensities, 36)  # split array so we can index any radius
mean_intensity = np.mean(intensities_ray, axis=0)  # compute the average intensity

# add some optional plotting here:
fig = plot(
    mean_intensity,
    lc='black', lw=5, spline=True,
    xtitle='radial distance', ytitle='intensity', aspect=16/9,
)
for i in range(0,36, 3):
    fig += plot(intensities_ray[i], lc=i, lw=1, like=fig)
fig.scale(21).shift(60,-800)          # scale up and move plot below the image

show(img, circle, lines, fig, __doc__, size=(625,1000), zoom=1.5)
