Through a costly simulation, I am able to calculate the value of a function at several discrete points on a plane. My task now is to interpolate, to find the values at all points of the grid. (It is a simulation of a sheet of rubber, with the sheet tessellated with a triangle grid.)

Now I have seen some similar questions on the site, on how to interpolate within a triangle, and the consensus seems to be to use barycentric coordinates. I have implemented this, and the result is shown on the left/top. For comparison, a result using the inverse of the distance to get the weights resulted in the picture on the right/bottom.

enter image description here

(I have not explicitly visualised the nodes, but from the second picture it's pretty obvious, where they are.)

Now, although the result with barycentric coordinates is not bad, esp. when compared to the other result, I'm not completely satisfied. Notice how the triangular/hexagonal structure is very visible, for example the bright lines emanating from the yellow spot.

My question: is there a better weighting function?

I strongly assume there is nothing better that only takes the 3 given control points into consideration, but I was wondering if there is a weighting function that uses the 6 nearest control points, so A-F instead of A-C in this figure:

enter image description here

Though there is a section on 'generalised' barycentric coordinates on the wikipedia site, I can't say it's something I understand how to apply. I've also looked at bicubic interpolation, but that is only possible on a square or rectangular grid.

Many thanks!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.