Я хочу сохранить элементы точек внутри области между двумя многоугольниками, а не полую (белую) область.
Я также дважды учитываю и храню элементы внутри полой части. Как избежать этого?
ef4x = [3, 6, 6, 3];
ef4y = [2, 2, 4, 4];
ef3x = [0, 9, 9, 0];
ef3y = [0, 0, 6, 6];
ef34x = [ef3x, ef4x];
ef34y = [ef3y, ef4y];
x = rand(1, 20)*9;
y = rand(1, 20)*6;
polyin1 = polyshape(ef4x, ef4y);
polyin2 = polyshape(ef3x, ef3y);
plot(polyin2, 'FaceColor', 'green');
hold on;
plot(polyin1, 'FaceColor', 'white');
hold on;
scatter(x,y, 'r');
[in1, on1] = inpolygon(x, y, ef4x, ef4y);
count1 = 0;
for i = 1:length(in1)
if in1(i) == 1
count1 = count1 + 1;
% some code to store the features of the points that satisfy the if
% statement
else
continue;
end
end
[in2, on2] = inpolygon(x, y, ef3x, ef3y);
count2 = 0;
for i = 1:length(in2)
if in2(i) == 1
count2 = count2 + 1;
% some code to store the features of the points that satisfy the if
% statement
else
continue;
end
end
Это просто простая иллюстрация. Есть многоугольники, окружающие многоугольники, поэтому проблема становится действительно сложной.