how to use inpolygon function
3 次查看(过去 30 天)
显示 更早的评论
Hi,
I have two polygons with different number of vertices:
polygon1= [0.1624 -0.6477;
0.2247 -0.6477;
0.2247 0.3874;
0.1624 0.5219]
polygon2= [0.1624 0.5219;
0.2247 0.3874;
0.2247 0.5651]
Where the first column is X-coordinates and the second column in Y-coordinates. I want to know if a any random point is in the first or second polygon. How can I do that? I read the documentation of this function (inpolygon) but I don't understand it well.
0 个评论
采纳的回答
Jos (10584)
2014-3-30
A polygon is defined by its vertices(corner points), being pairs of (x,y) coordinates. In your case, these coordinates are stored in a single N-by-2 matrix.
polygon1= [0.1624 -0.6477;
0.2247 -0.6477;
0.2247 0.3874;
0.1624 0.5219]
P = rand(1,2)/2 % we will look at 1 point, but in poly can accept multiple points!
tf = inpolygon(P(:,1), P(:,2),polygon1(:,1), polygon1(:,2))
plot(polygon1([1:end 1],1), polygon1([1:end 1],2),'b.-',P(:,1), P(:,2),'r*') % a plot is often informative
if any(tf==1),
title('Some point(s) is (are) in or on the edge of polygon 1') ;
else
title('All points are outside polygon 1') ;
end
I hope this helps.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Computational Geometry 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!