искать точки внутри области, определенной между двумя полигонами - PullRequest
0 голосов
/ 26 октября 2019

Я хочу сохранить элементы точек внутри области между двумя многоугольниками, а не полую (белую) область.

Я также дважды учитываю и храню элементы внутри полой части. Как избежать этого?

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

Это просто простая иллюстрация. Есть многоугольники, окружающие многоугольники, поэтому проблема становится действительно сложной.

...