我知道一个 Matlab 函数,它以一组点作为输入并选择构成凸包的点。
来自 Mathworks 网站的示例:
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*')
现在,我的问题是:是否存在 Matlab 函数或者可以遵循什么方法来计算由凸包的点集定义的两个凸集的交集?
我知道一个 Matlab 函数,它以一组点作为输入并选择构成凸包的点。
来自 Mathworks 网站的示例:
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*')
现在,我的问题是:是否存在 Matlab 函数或者可以遵循什么方法来计算由凸包的点集定义的两个凸集的交集?
让第一个凸区域的凸包中的点坐标存储在数组中,并将这些相同点的坐标存储在数组中。让数组和存储第二个凸区域的类似信息。x1y1x2y2
如果您有 MATLAB 的 Mapping Toolbox,则可以使用该polybool函数通过[x, y] = polybool('intersection', x1, y1, x2, y2). 我不熟悉函数背后的算法,所以我不能对此发表评论。
Matlab 文件交换中有一个polygon_intersection脚本,它将计算一个或多个多边形的交集。在您的情况下,您的两组凸包是您希望相交的多边形。