Define a pentagon and a set of points. Then, determine which points lie inside (or on the edge) of the pentagon.

Define the x and y coordinates of polygon vertices to create a pentagon.

L = linspace(0,2.*pi,6);
xv = cos(L)';
yv = sin(L)';

Define x and y coordinates of 250 random query points. Initialize the random-number generator to make the output of `randn` repeatable.

rng default
xq = randn(250,1);
yq = randn(250,1);

Determine whether each point lies inside or on the edge of the polygon area. Also determine whether any of the points lie on the edge of the polygon area.

[in,on] = inpolygon(xq,yq,xv,yv);

Determine the number of points lying inside or on the edge of the polygon area.

numel(xq(in))

ans =
80

Determine the number of points lying on the edge of the polygon area.

numel(xq(on))

ans =
0

Since there are no points lying on the edge of the polygon area, all 80 points identified by `xq(in)`, `yq(in)` are strictly inside the polygon area.

Determine the number of points lying outside the polygon area (not inside or on the edge).

numel(xq(~in))

ans =
170

Plot the polygon and the query points. Display the points inside the polygon with a red plus. Display the points outside the polygon with a blue circle.

figure
plot(xv,yv) % polygon
axis equal
hold on
plot(xq(in),yq(in),'r+') % points inside
plot(xq(~in),yq(~in),'bo') % points outside
hold off