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

时间:2015-04-20 09:25:38

标签: matlab polygon

假设我有一个多段多边形。我在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]')

以下是它的外观:
A multi-segment polygon

如何确定特定点是否在我的多边形定义的区域内?
请注意我想将这两种形状混为一谈,并在这件事上对它们进行相同的处理 我可以使用此代码的一个多边形来完成它,但它不能用于更多:

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

1 个答案:

答案 0 :(得分:4)

inpolygon可以处理这种情况,但单独的多边形顶点需要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