geometry - Minimal surface solution in Python -


i have set of 3d points defining 3d contour. want obtain minimal surface representation corresponding contour (see minimal surfaces in wikipedia). requires solve nonlinear partial differential equation.

in matlab straightforward using pdenonlinfunction (see matlab's documentation). example of usage solving minimal surface problem can found here: minimal surface problem on unit disk.

i need make such implementation in python, know haven't found web resources on how to this.

can point me resources/examples of such implementation?

thanks, miguel.

update

the 3d surface (ideally triangular mesh representation) want find bounded set of 3d points (as seen in figure, points lie in best-fit plane):

enter image description here

ok, doing research found minimal surface problem related solution of biharmonic equation, , found thin-plate spline fundamental solution equation.

so think approach try fit sparse representation of surface (given 3d contour of points) using thin-plate splines. found this example in scipy.interpolate scattered data (x,y,z format) interpolated using thin-plate splines obtain zi coordinates on uniform grid (xi,yi).

two questions arise: (1) thin-plate spline interpolation correct approach problem of computing surface set of 3d contour points? (2) if so, how perform thin-plate interpolation on scipy non-uniform grid?

thanks again! miguel

update: implementation in matlab (but doesn't work on scipy python)

i followed this example using matlab's tpaps function , obtained minimal surface fitted contour on uniform grid. result in matlab (looks great!): enter image description here

however need implement in python, i'm using package scipy.interpolate.rbf , thin-plate function. here's code in python (xyz contains 3d coordinates of each point in contour):

grid_points = 25 x_min = xyz[:,0].min() x_max = xyz[:,0].max() y_min = xyz[:,1].min() y_max = xyz[:,1].max() xi = np.linspace(x_min, x_max, grid_points) yi = np.linspace(y_min, y_max, grid_points) xi, yi = np.meshgrid(xi, yi)  scipy.interpolate import rbf rbf = rbf(xyz[:,0],xyz[:,1],xyz[:,2],function='thin-plate',smooth=0.0) zi = rbf(xi,yi) 

however result (quite different obtained in matlab):

enter image description here

it's evident scipy's result not correspond minimal surface.

is scipy.interpolate.rbf + thin-plate doing expected, why differ matlab's result?

the question states need solve nonlinear partial differential equation. wikipedia states 'they difficult study: there no general techniques work such equations, , each individual equation has studied separate problem.' however, didn't give equation! , matlab use genetic algorithms arrive @ surfaces? is, use rule of thumb make best guess , tries out small variations in component squares until no smaller surface can found. implementing kind of solution laborious not conceptually difficult (assuming sort of thing). remember calculus of continuous functions special case of calculus of linear approximations of functions (the increment set 0 instead of finite value). made clear me reading books of j l bell on smooth infinitesimal analysis - use algebra finite increments , leave resulting factors in derivations instead of 'neglecting' them.


Comments

Popular posts from this blog

SPSS keyboard combination alters encoding -

Add new record to the table by click on the button in Microsoft Access -

CSS3 Transition to highlight new elements created in JQuery -