4
$\begingroup$

Note: this question was also posted in StackOverflow and math.stackexchange.

I have a set of 3D points defining a 3D contour, as shown below. The points in this contour lie in their best-fit plane and I want to obtain a 3D triangular mesh representation of the surface inside this contour.

enter image description here

Doing some research I found that this is basically a minimal surface problem and its solution is related with the Biharmonic Equation. I also found that the Thin-plate spline is the fundamental solution to this equation.

So I think the approach would be to try to fit this sparse representation of the surface (given by the 3D contour of points) using thin-plate splines. I found this example in scipy.interpolate where scattered data (x,y,z format) is interpolated using thin-plate splines to obtain the ZI coordinates on a uniform grid (XI,YI).

Two questions arise: (1) Would thin-plate spline interpolation be the correct approach for the problem of computing the surface from the set of 3D contour points? (2) If so, how to perform thin-plate interpolation on scipy with a NON-UNIFORM grid?

Thanks! Miguel

$\endgroup$
  • $\begingroup$ All you have is this boundary? $\endgroup$ – J. M. May 19 '13 at 12:56
  • $\begingroup$ @J.M. Yes, all I have is this set of points defining the boundary. $\endgroup$ – CodificandoBits May 19 '13 at 12:57
  • 1
    $\begingroup$ Is there a reason you want the minimal surface equation solution as opposed to some other one? There are infinitely many surfaces that you can create that have this curve as their boundary. $\endgroup$ – Bill Barth May 19 '13 at 13:50
  • $\begingroup$ @Bill Barth: for my application the 3D contour/surface represent a surface area along which a fluid passes. I'm interested in estimating the minimum area of such a surface so as to estimate the flow. $\endgroup$ – CodificandoBits May 19 '13 at 14:25
  • 3
    $\begingroup$ I would add that to the description of the question. $\endgroup$ – Bill Barth May 19 '13 at 14:47
1
$\begingroup$

I don't think you can just interpolate. You may know the Fundamental Solution to the governing equations, but you have no data about the interior points of the problem, and I suspect that the solution will be poor far from the boundary.

Also, it's been awhile, but I usually associate the following equation with minimal surfaces (for small displacements, at least): $$ (1+u_x^2)u_{yy} - 2u_x u_y u_{xy} + (1+u_y^2)u_{xx} = 0 $$ where $u(x,y)$ is the small displacement of the surface in question.

You could solve this by projecting your boundary points down into the $(x,y)$-plane and using their $z$ value as $u(x,y)$ on the boundary. Using the $(x,y)$ coordinates of the boundary points as the boundary of your domain, you could create a triangular mesh on the interior and then solve the above equation with above boundary conditions.

deal.II's example #15 does this, though I think you'd need a quadrilateral mesh rather than triangles. I can't tell from the figure, but if your boundary is a nominally a circle, then generating a quad mesh for it should be straightforward. If it's arbitrary, then you'll have to do some more work.

There might also be a FEniCS example for this if you prefer Python to C++, but I couldn't tell from a quick search around the web. There's also a quick MATLAB example using the PDE Toolbox if you have access to that. It will even do the mesh generation for you.

$\endgroup$
  • $\begingroup$ Bill thanks for all the resources! I haven't heard of FEniCS, and doing some search I found this link: fenicsproject.org/documentation/tutorial/…. Would this be the approach for solving the PDF in python? $\endgroup$ – CodificandoBits May 19 '13 at 15:35
  • $\begingroup$ That seems like one approach, but I'm not a FEniCS expert. $\endgroup$ – Bill Barth May 19 '13 at 15:49

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.