确定用户是在多边形内部还是在多边形内部单击

时间:2014-06-01 20:57:51

标签: matlab

我正在尝试在Matlab中编写一个脚本来填充多边形,并在用户在多边形内部单击时将“内部”打印到输出窗口,当用户在多边形外部单击时,将“外部”打印到输出窗口。出于某种原因,即使我在多边形外部单击,它也会打印在内部。我把我的代码放在下面。

xv = [ -3 3 3 -3]; %// x coords of polygon vertices. Arbitrary number
yv = [-5 -5 7 7]; %// y coords of polygon vertices. Same number as for x
fill(xv,yv,'b') %// draw polygon
axis([-10 10 -10 10])
[xp, yp] = ginput(1); %// get point coordinates
inside = inpolygon(xp,yp,xv,yv); %// is it inside?

while inside
    fprintf('Inside\n')
    [xp, yp] = ginput(1);
end
    fprintf('Outside\n')

1 个答案:

答案 0 :(得分:0)

代码缺少while循环中的行来重置inside的值,检查用户输入是否仍在多边形中:

while inside
    fprintf('Inside\n')
    [xp, yp] = ginput(1);
    inside = inpolygon(xp,yp,xv,yv); %// is it inside?
end

% outside the polygon, so finished
fprintf('Outside\n')

因此,一旦用户单击多边形外部,脚本就会终止。