假设我有一个多段多边形。我在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,:))
答案 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