"""Interpolate the arrays of a source Mesh (RandomHills)
onto another (ellipsoid) by averaging closest point values"""
from vedo import ParametricShape, Sphere, show

# RandomHills already contains the height as a scalar defined on vertices
h = ParametricShape('RandomHills')
h.cmap('hsv', vmin=0, vmax=6)
h.add_scalarbar3d(title='RandomHills height scalar value')

# interpolate such values on a completely different Mesh.
# pick n=4 closest points and assign an ave value based on shepard kernel.
s = Sphere().scale([1,1,0.5]).pos(-.1,1.5,0.3).alpha(1).lw(1)
s.interpolate_data_from(h, n=4, kernel='gaussian')
s.cmap('hsv', vmin=0, vmax=6)

show(h,s, __doc__, axes=1).close()
