如何找出一个点是否在Matlab中的指定多边形中?

How to find out if a point is in a secified polygon in Matlab?

假设我有一个多线段多边形。我在 Matlab 中定义了这样的顶点:

    X = [-1 -1 1 1;
         -4 -4 -3 -3];
    Y = [0 5 5 0;
        -6 -8 -8 -6]

我可以像这样绘制这个多线段多边形:

patch(X',Y',[1 1 1 1;1 1 1 1]')

这是它的外观:

如何确定特定点是否在我的多边形定义的区域内?
请注意,我想把这两个形状放在一起,在这件事上一视同仁
我可以用这个代码用一个多边形来做,但它不适用于更多:

inpolygon(A(1),A(2), X(1,:),Y(1,:)) 

inpolygon can handle this situation, but the separate polygon vertices need to be separated with a NaN 这样就没有连接了。

这个测试用例给了我预期的结果:

 X = [-1 -1  1  1 ;
      -4 -4 -3 -3];
 Y = [ 0  5  5  0 ;
      -6 -8 -8 -6];

X = [X';nan(1,size(X,1))];
Y = [Y';nan(1,size(Y,1))];

isIn = inpolygon([-3.5,-2,0],[-7,-4,2],X(:),Y(:))

输出

isIn =
     1     0     1