[totalArea, areas, centroid] = surfarea(x,y,z)
[totalArea, areas, centroid] = surfarea(h), where h is a handle to a Surface object.
surfarea calculates the total surface area as well as returns the areas of each individual cell, along with the area centroid of the surface.
Example: Plot peaks, coloring each cell with its own area.
[x,y,z] = peaks;
[area,cellAreas,centroid] = surfarea(x,y,z);
h = surf(x,y,z,cellAreas); axis image
title(sprintf('Total surface area: %.2f', surfarea(h)));
Sky Sartorius (2020). Surface area (https://www.mathworks.com/matlabcentral/fileexchange/62992-surface-area), MATLAB Central File Exchange. Retrieved .
This is a very impressive program. I've developed a program for generating various 3D forms and have been stymied as to how to calculate the surface area. Moreover, I have a very limited number of bodies (that are not bodies of revolution) for which the surface area is known. This algorithm gave perfect results for those cases. Of course, I'll continue testing it.
Disperse (http://www.mathworks.com/matlabcentral/fileexchange/33866-disperse) is needed. My apologies. I have since updated the file such that disperse is no longer required.
There is the error at the beginning:
"Undefined function or variable 'disperse'.
Error in surfarea (line 35)
[x,y,z] = disperse(varargin);"
Eliminated need for disperse tool.
Added centroid calculation.
Inspired by: disperse