# Transform a list of points to a surface

I would like to show the surface which passes through a list of points. I already have the shape using the ListPointPlot3D (Fig.1). However, I would like to show the surface which includes all the points and then find the associated surface area. I tried different commands such as ListSurfacePlot3d but it just represents part of the shape (Fig. 2). Also, I would like to know how I can find the surface area value of the generated surface. I tried ListPlot3D command but it gives me a wrong answer (Fig.3). Below is the link to the data.

https://pastebin.com/BEDj33X3

Any help is really appreciated.

Thank you and regards,

• Thank you for the response. No, I tried that command, but it did not provide me the correct answer. I attached the obtained fig to the question. Jun 1, 2020 at 18:05
• Thank you for the response. No problem! How can I share the data with you? Jun 1, 2020 at 19:13
• Thank you! I added the link to my data in the question box. Jun 1, 2020 at 19:40

Calculating a convex hull mesh is somewhat well-defined. Calculating a volume or surface of a shape with concavity is more complicated and requires you to tune the algorithm to get what you want. Thus, there are built-in algorithms for convex shapes, but I don't know of any built-in algorithm for non-convex shapes. Fortunately, Jon McLoone has uploaded a nice algorithm to the Wolfram Function Repository so we don't have to build our own.

data = (* your posted data here *);
f = ResourceFunction["NonConvexHullMesh"];
mesh = f[data, 5];
MeshRegion[mesh, PlotTheme -> "Scientific"]


The output of the function is a MeshRegion, but it seems I can change the PlotTheme by calling MeshRegion on the output. You could of course just use f[data, 5] to get the default output and not mess around with MeshRegion.

As I mentioned, these shapes can require some tuning, so you may have to play around with the "sensitivity" parameter in order to get exactly what you want, but a sensitivity of 5 looks pretty good to me.

EDIT:

Apparently I don't read well. I missed where you asked for the surface area. However, that should be easy enough:

Area[mesh]


64717.1