# [Paraview] Fwd: Interpolation problem

Aurélien Marsan aur.marsan at gmail.com
Tue Oct 19 11:48:09 EDT 2010

```Thanks for this explanation. Really interesting. I'm glad having read that
mail.
What would happen if the square were not in the (x,y) plane. The function
become a f(x,y,z) function ?
Or by writing f(x,y) you meant f(i,j) where i and j are locl coordinates ?

2010/10/15 Moreland, Kenneth <kmorel at sandia.gov>

>  If I can, I would like to expand the conversation a little bit because I
> don’t think the technical details are telling the whole story.
>
> The root of the problem is that the interpolation of a scalar field based
> on the four corners of a square (or any quadrilateral) is in general
> ill-defined.  We usually mean for field to be linearly interpolated between
> the points.  That is, find some function of the form f(x,y) = a*x + b*y + c
> that gives the correct scalar for all four points.  But, in fact, four
> points over constrain the problem and no such linear function exists.
>
> So really, the differences you are seeing are the differences between how
> the internal VTK functions resolve the interpolation and how your rendering
> hardware is doing it.  I haven’t looked at the source code, but I’m assuming
> that VTK is using something like bilinear interpolation.  Bilinear
> interpolation works by first interpolating the scalar on opposite edges and
> then interpolating again between these edges to get a point in the interior.
>  Bilinear interpolation has several advantages: it can be done independently
> of neighboring polygons and still be C0 continuous, it is easy to implement,
> it is smooth in the interior, and it gives an interpolation that intuitively
> makes sense.  Note, however, that bilinear interpolation is *not* linear.
>  This is evident by your plot (which is a parabola).
>
> Your graphics driver is much more concerned with speed.  As such, it takes
> your quadrilateral and breaks it into triangles.  This circumvents the whole
> interpolation problem because the three vertices of the triangle perfectly
> constrain the linear function.  It is also easy for the graphics hardware to
> compute the interior of the triangle.  Of course, the result is not as,
> shall we say, pleasant as bilinear interpolation.  It is not smooth: There
> is a C1 discontinuity at the line where the quadrilateral was split into
> triangles.  Also, this splitting is arbitrary.  The split could just as
> easily been made in the opposite direction.  In that case, you would see a
> red line go from upper left to lower right instead of that blue line from
> lower left to upper right.
>
> So the rendering is probably not what was indented when defining the scalar
> value on a quadrilateral.  However, ParaView allows it because correcting
> the problem would make the rendering prohibitively slow.  Furthermore, it is
> rarely even noticeable.  The square in this example is worst case.  Not only
> do no linear functions fit, they are not even close.  Thus, the different
> ways to resolve the issue are dramatically different.  In a practical
> application, this does not occur.  The scalar values tend to more closely
> fit a linear function.  If a quadrilateral like this occurred in a real data
> set, it might be indicative of a meshing problem.  Furthermore, real meshes
> have lots of facets.  If this square was a small part of a much bigger
> surface, differences in interpolation are less meaningful.
>
> In short, the interpolation your graphics hardware performs is sufficient
> for qualitative analysis (getting an overview of behavior), which is all its
> really good for anyway.  When you do qualitative analysis (showing actual
> numbers in the data) such as in your plot, the more accurate interpolation
> models of VTK are used.
>
> -Ken
>
>
>
> On 10/14/10 9:06 AM, "Andy Bauer" <andy.bauer at kitware.com> wrote:
>
>
>
> 2010/10/14 小縣信也 <so0208jp at gmail.com>
>
> Hi Andy,
>
> Do you mean that the rendering image doesn't reflect the result of
> interpolation ?
>
>
> Yes.
>
>
> If so, what is the most common usage?
> In what situation is the interpolation used ?
>
>
> If your grid uses triangles then the image should match the interpolation
> for the typical node/point based interpolation.
>
>
>
> Shinya
>
>
> 2010/10/13 Andy Bauer <andy.bauer at kitware.com>:
> > I think this is a rendering issue and not an interpolation issue.  From
> the
> > 2d plot you can see that it's properly interpolating the values.  I think
> > the quadrilateral is getting rendered as 2 triangles in which case the
> > diagonal values appear to be constant since the 2 end points are at the
> same
> > value.
> >
> > 2010/10/12 小縣信也 <so0208jp at gmail.com>
> >>
> >> Hello
> >>
> >> I'm sending  the following  e-mail again ,because nobody answered it.
> >> Does anyone have information on my problem?
> >>
> >> Shinya
> >>
> >>
> >> ---------- Forwarded message ----------
> >> From: 小縣信也 <so0208jp at gmail.com>
> >> Date: 2010/10/7
> >> Subject: Interpolation problem
> >> To: paraview at paraview.org
> >>
> >>
> >> Hello, paraview users
> >>
> >> I draw the file “Sample_inter.vtk” on ParaView. (ref:attached file)
> >> I chose “Gouraud” in Interpolation option.
> >> The contor picture doesn’t seem to be interpolated by 4 points.
> >> However,the graph which is made by PlotOverLine shows the gradation of
> >> 4 points scalar.
> >> Why are they different?
> >> Does anyone know this problem?
> >> How can I make contour picture interpolated by  Gouraud ?
> >>
> >>
> >> Shinya Ogata
> >>
> >> _______________________________________________
> >>
> >> Visit other Kitware open-source projects at
> >> http://www.kitware.com/opensource/opensource.html
> >>
> >> Please keep messages on-topic and check the ParaView Wiki at:
> >> http://paraview.org/Wiki/ParaView
> >>
> >> http://www.paraview.org/mailman/listinfo/paraview
> >>
> >
> >
>
>
>
>
> _______________________________________________
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>