www.pudn.com > convhull.zip > convhull_my.m, change:2011-05-21,size:1385b

```function [xb yb]=convhull_my(x,y)
%根据老师的思路编的，希望能给大家一个参考
N=50;
x=rand(N,1);y=rand(N,1);

[xmax,I]=max(x);
y_xmax=y(I);
plot(x,y,'g*');hold on
jiben=xmax+1i*y_xmax;
qidian=xmax+1i*y_xmax;
zuobiao=x+1i*y;
xb=[xmax];
yb=[y_xmax];
axis([0 1 0 1]);
jibenxiangliang=jiben-0;
jibenjiao=180*imag(log(jibenxiangliang))/pi;
zuobiaoxin=0;
while zuobiaoxin~=qidian;
cha=zuobiao-jiben;
chajiaodu=180*imag(log(cha))/pi;
for i=1:length(chajiaodu)
if chajiaodu(i)<0
chajiaodu(i)=chajiaodu(i)+360;
else if chajiaodu(i)==0
chajiaodu(i)=65535;
end
end
end
jiaoducha=chajiaodu-jibenjiao;
for i=1:length(jiaoducha)
if jiaoducha(i)<0
jiaoducha(i)=360-jibenjiao+chajiaodu(i)
end
end;
[minjiaodu I]=min(jiaoducha);
xxin=x(I);yxin=y(I);
zuobiaoxin=xxin+1i*yxin;
xb=[xb x(I)];
yb=[yb y(I)];
jiben=zuobiao(I);
jibenjiao=chajiaodu(I);
end
hold on
plot(xb,yb);

%%计算面积
ssum=0;
for i=2:(length(xb)-2)
a=sqrt((xb(i)-xb(1))^2+(yb(i)-yb(1))^2);
b=sqrt((xb(i+1)-xb(1))^2+(yb(i+1)-yb(1))^2);
c=sqrt((xb(i+1)-xb(i))^2+(yb(i+1)-yb(i))^2);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
ssum=ssum+s;
end
polyarea(xb,yb)
title(['area is ',num2str(ssum)]);
hold off
end```