2

The picture below shows a triangular surface mesh. Its vertices are exactly on the surface of the original 3D object but the straight edges and faces have of course some geometric error where the original surface bends and I need some algorithm to estimate the smooth original surface.

Details: I have a height field of (a projectable part of) this surface (a 2.5D triangulation where each x,y pair has a unique height z) and I need to compute the height z of arbitrary x,y pairs. For example the z-value of the point in the image where the cursor points to.

If it was a 2D problem, I would use cubic splines but for surfaces I'm not sure what is the best solution.

Surface

Geom
  • 827
  • 4
  • 15
  • Isn't it ISO-contour lines? Like so:http://www.geom.at/products/fade2d/? – Micromega Dec 15 '16 at 10:19
  • Nice that you mention Fade2D, I'm the author. But I need the algorithm in a different software and I do not see how my ISO contours could help in this context? – Geom Dec 16 '16 at 11:01
  • Isn't it contour lines is z value?! – Micromega Dec 16 '16 at 11:23
  • Yes, that would give me a z-value ON the triangulated surface (actually one would better use z=getHeight(x,y) for that purpose). But that's not a solution in my case because I need an approximate z-value on the original smooth surface. For example, one can use splines in 2D to create a smooth curve from a polyline and similar techniques exist in 3D. But this is a huge field of research and I'd like to get a pointer where I can start reading. – Geom Dec 16 '16 at 12:13
  • I think you need splines in 3d? – Micromega Dec 16 '16 at 12:24
  • 1
    It may be possible to simply extend your spline-based approach to the surface case: i.e. form a set of vertex normals (based on an average of indcident triangle normals) and fit a spline "patch" to each triangle, using the derivative information implied by the vertex normals... Such a surface would exactly interpolate the mesh at the vertices, but be curved in-between. – Darren Engwirda Dec 16 '16 at 20:47

1 Answers1

1

As commented by @Darren what you need are patches.

It can be bi-linear patches or bi-quadratic or Coon's patches or other.

I have found no much reference doing a quick search but this links:

The concept is that you calculate splines along the edges (height function with respect to the straight edge segment itself) and then make a blending inside the surface delimited by the edges. The patch os responsible for the blending meaning that inside any face you have an height which is a function of the point position coordinates inside the face and the values of the spline ssegments which are defined on the edges of the same face.

As per my knowledge it is quite easy to use this approach on a quadrilateral mesh (because it becomes easy to define on which edges sequence to do the splines) while I am not sure how to apply if you are forced to go for an actual triangulation.

Diego Mazzaro
  • 2,734
  • 1
  • 20
  • 21