Предположительно, вы захотите иметь древовидную структуру, если хотите, чтобы она была как можно более общей (то есть многоугольники с многоугольными отверстиями, в которых есть многоугольники с отверстиями внутри этого, ...). Matlab не очень хорош для эффективного представления древовидных структур, но вот одна из идей ...
Иметь структуру-массив полигонов.
Каждый многоугольник - это структура с двумя полями: «Углы» и «Дети».
Поле 'corners' содержит матрицу (x, y) координат углов, к которой обращаются как "data {polyIdx} .corners (:, cornerIdx)".
Поле 'children' является структурным массивом полигонов.
Вот пример кода для создания треугольника с фиктивными дочерними элементами, которые являются дырами (хотя они на самом деле недопустимы, потому что они, вероятно, будут перекрываться:
polygon = struct;
npoints = 3;
polygon.corners = rand(2,npoints);
polygon.children = struct;
nchildren = 5;
for c=1:nchildren
polygon.children(c).corners = rand(2,npoints);
polygon.children(c).children = struct;
end
Вы можете продолжить рекурсивное определение дочерних элементов, которые чередуются между созданием отверстий и их заполнением.