I ran into this while writing a script to process and plot data output from another tool. The data is expected to be a list of elements, where each element is of the form {x,y,z,intensity}, where intensity is some intensity value. The x-y-z triplets are coordinates which are expected to cover some surface. They are in no particular order. In the example the surface is a torus. What I want to do is to be able to plot the data as a surface, with the colorfunction on the surface representing the intensity value at that point, interpolated from the data.
ListSurfacePlot3D looks perfect for this, with its ColorFunction option used to paint the surface. So for that purpose, I need a function that maps {x,y,z} to an interpolated intensity value. An Interpolating Function seems perfect, with InterpolationOrder->1, since the data is not from a structured grid.
Now to the issue. I construct just such a function, but when I try to use it I find that for some inputs within the range of the function, it is being returned unevaluated. This seemed surprising, since even outside the range an interpolation function generally returns and extrapolated value. (I do admit this usage seems a bit extreme, since the 3D surface is in fact a 2D manifold.)
But what is even more peculiar in that when I apply the function to the exact list of points for which Interpolation was given values, the interpolation function returns some of them unevaluated. I would think it would be defined at least on the exact values on which it is based.
I attach the notebook.
Anyone have any thoughts on this?
Best,
David