我必须计算给定'x-vector','y-vector'中点的坐标的任何多边形(我只知道坐标是顺时针排序的,不包括像沙漏这样的多边形)。我试着写这段代码:
function [areaofit] = Polygarea(xs,ys,cor,prevsum)
if(length(xs)~=length(ys))
disp('dimentions error!please try again');
end
if(nargin==2)
cor=1;
prevsum=0;
end
if(cor==length(xs)-1)
areaofit=prevsum;
figure(1);
fill(xs,ys,'r');
title(['Area = ' num2str(areaofit)]);
end
if(cor~=length(xs)-1)
mat=[xs(1) ys(1) 1;zeros(2,3)];
for k=2:3
mat(k,1)=xs(cor+k-1);
mat(k,2)=ys(cor+k-1);
mat(k,3)=1;
end
farea=prevsum+abs(det(mat))/2;
Polygarea(xs,ys,cor+1,farea);
end
该函数适用于任何凸多边形,但也有适用于它的凹多边形(例如“星” )。我的解决方案有什么可以改进的?谢谢