File Exchange

image thumbnail

Surface area

version (2.43 KB) by Sky Sartorius
Calculate surface area and centroid of a surface or mesh.


Updated 15 Aug 2017

View License

[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)));

Cite As

Sky Sartorius (2020). Surface area (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (3)


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.

Wei Wu,
Disperse ( is needed. My apologies. I have since updated the file such that disperse is no longer required.

Wei Wu

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.

MATLAB Release Compatibility
Created with R2016a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Inspired by: disperse