如何找出一个点是否在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
假设我有一个多线段多边形。我在 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