Code covered by the BSD License

### Highlights fromgeom2d

from geom2d by David Legland
Geometry library for matlab. Performs geometric computations on points, lines, circles, polygons...

polygonLength(poly, varargin)
```function len = polygonLength(poly, varargin)
%POLYGONLENGTH Perimeter of a polygon
%
%   L = polygonLength(POLYGON);
%   Computes the boundary length of a polygon. POLYGON is given by a N-by-2
%   array of vertices.
%
%   Example
%     % Perimeter of a circle approximation
%     poly = circleAsPolygon([0 0 1], 200);
%     polygonLength(poly)
%     ans =
%         6.2829
%
%   polygons2d, polygonCentroid, polygonArea, drawPolygon, polylineLength
%
%   ---------
%   author : David Legland
%   INRA - TPV URPOI - BIA IMASTE
%   created the 11/05/2005.
%

%   HISTORY
%   2011-03-31 add control for empty polygons, code cleanup
%   2011-05-27 fix bugs
% If first argument is a cell array, this is a multi-polygon, and we simply
% add the lengths of individual polygons
if iscell(poly)
len = 0;
for i = 1:length(poly)
len = len + polygonLength(poly{i});
end
return;
end

% case of a polygon given as two coordinate arrays
if nargin == 2
poly = [poly varargin{1}];
end

% check there are enough points
if size(poly, 1) < 2
len = 0;
return;
end

% compute length
if size(poly, 2) == 2
dp = diff(poly([1:end 1], :), 1, 1);
len = sum(hypot(dp(:, 1), dp(:, 2)));
else
len = sum(sqrt(sum(diff(poly([1:end 1], :), 1, 1).^2, 2)));
end
```