points lying inside a polygon and a circle
显示 更早的评论
How can I find the number of point lies inside both a circle and a polygon (the point should lie in the mutual/overlapping area in between the circle and the polygon) ?
采纳的回答
更多回答(1 个)
Image Analyst
2017-1-30
Did you try
count = 0;
if inpolygon(x,y,xCircle,yCircle) && inpolygon(x,y,xPoly,yPoly)
count = count + 1
end
where you call inpolygon twice, once passing in the circle coordinates and once passing in the polygon coordinates and then ANDing the two results together?
6 个评论
KalMandy
2017-1-30
Image Analyst
2017-1-30
编辑:Image Analyst
2017-1-30
Yes, if you have the coordinates for the perimeter of the circle. If you don't, then see Matt J's formula below. You didn't specify in what form you have information about the circle. You'd put my code in a loop over all (x,y) points that you have.
count = 0;
for k = 1 : length(x)
if inpolygon(x(k),y(k),xCircle,yCircle) && inpolygon(x(k),y(k),xPoly,yPoly)
count = count + 1
end
end
Same for Matt's code - loop over all x,y that you have.
Matt J
2017-1-30
Same for Matt's code - loop over all x,y that you have.
Neither approach requires a loop over x,y. INPOLYGON is vectorized.
Image Analyst
2017-1-30
You're right. x and y can be a vector of coordinates. Here's a demo:
% Make circle.
x0 = 20;
y0 = 30;
R = 15;
% Plot circle
pos = [x0-R, y0-R, 2*R, 2*R];
rectangle('Position', pos, 'Curvature',[1 1]);
hold on;
% Make polygon
xv = [10, 30, 30, 10, 10];
yv = [40, 40, 5, 5, 40];
plot(xv, yv, 'b-');
grid on;
% Make 60 points for x and y
numPoints = 60;
x = 70 * rand(1, numPoints);
y = 70 * rand(1, numPoints);
plot(x, y, 'r*');
% Now count how many are in both the circle and the polygon.
count = sum(inpolygon(x,y,xv,yv) & ((x-x0).^2+(y-y0).^2<=R^2))
KalMandy
2017-1-30
hanif hamden
2019-4-25
If i put (x,y) in geographical coordinate and I want my radius is 10km. How should I do that?
类别
在 帮助中心 和 File Exchange 中查找有关 Quadrangles and Areas on Spheroids 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!