Предположительно, вы захотите иметь древовидную структуру, если хотите, чтобы она была как можно более общей (например, многоугольники с многоугольными отверстиями, внутри которых есть многоугольники с отверстиями внутри, ...). 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
Вы можете продолжать рекурсивно определять дочерние элементы, которые попеременно создают дыры и заполняют их.
person
Community
schedule
26.06.2009