二维点集的凸包

MATLAB用convhull函数计算平面点集的凸包,该函数的调用格式为:

K=convhull(x,y) 返回凸包上点的x和y矢量的编号。该函数使用Qhull算法,要了解该算法的具体内容,请参见www.qhull.org。

K=convhull(x,y,options) 指定一个字符串单元数组options,它将通过convhulln函数用在Qhull算法中。默认时的选项为{'Qt'}。如果options为[],则使用默认选项。如果options为{''},则不使用选项,连默认选项也不使用。

[K,a]=convhull(…) 还返回凸包的面积。

下面的代码首先在极坐标中生成一系列点,用pol2cart函数将它们转换到笛卡儿坐标,然后用convhull函数计算点的凸包,用plot函数,用红色实线画出凸包线。

code.matlab
>> xx=-1:.05:1; yy=abs(sqrt(xx));
>> [x,y]=pol2cart(xx,yy);
>> k=convhull(x,y);
>> plot(x(k),y(k),'r-',x,y,'b+')

生成图2-1。

Document Image

图2-1 求点集的凸包