将 polyshape 转换为一组坐标数组

Convert polyshape to set of coordinates array

我希望使用 Matlab geom2d library 中的 distancepointpolygon 函数找到点与 polyshape 之间的最短距离。 distancepointpolygon 函数对多边形执行此操作,因此如何将任何 polyshape 转换为包含顶点坐标的 N×2 数组?我是手动完成的,我正在寻找一个通用的解决方案。

polySquare = polyshape([0 5 5 0], [10 10 15 15]);
plot(polySquare)
square = [0 10; 5 10; 5 15; 0 15];
p0 = [5 10];
distancePointPolygon(p0, square)  

polySquare.Vertices应该是你需要的矩阵:

>> polySquare = polyshape([0 5 5 0],[10 10 15 15]);
>> polySquare.Vertices

ans =

     0    10
     0    15
     5    15
     5    10

因此你可以这样做:

polySquare = polyshape([0 5 5 0], [10 10 15 15]);
plot(polySquare)
square = polySquare.Vertices;
p0 = [5 10];
distancePointPolygon(p0, square)

the documentation