decsg

Разложите конструктивную твердую 2D геометрию на минимальные области

Описание

пример

dl = decsg(gd,sf,ns) анализирует матрицу описания геометрии gd в матрицу геометрии dl и возвращает минимальные области, которые удовлетворяют формуле набора sf. Матрица пространства имен ns текстовая матрица, которая связывает столбцы в gd к именам переменных в sf.

Как правило, вы чертите геометрию в приложении PDE Modeler, затем экспортируете его в MATLAB® Командное окно путем выбора Export Geometry Description, Set Formula, Labels из меню Draw в приложении. Получившаяся матрица описания геометрии gd представляет модель CSG. decsg анализирует модель и создает набор разделенных минимальных областей, ограниченных граничными сегментами и сегментами границы. Этот набор минимальных областей составляет анализируемую геометрию и позволяет другим функциям Partial Differential Equation Toolbox™ работать с геометрией.

В качестве альтернативы можно использовать decsg функционируйте при создании геометрии, не используя приложение. Смотрите 2D Создание Геометрии в Командной строке для деталей.

Возвратить все минимальные области (sf соответствует объединению всех форм в gd), используйте более короткий синтаксис dl = decsg(gd).

пример

[dl,bt] = decsg(___) возвращает булеву таблицу (матрица), которая связывает исходные формы с минимальными областями. Столбец в bt соответствует столбцу с тем же индексом в gd. Строка в bt соответствует индексу минимальной области. Можно использовать bt удалить контуры между субдоменами.

Примеры

свернуть все

Создайте 2D геометрию в приложении PDE Modeler, затем экспортируйте его в рабочее пространство MATLAB и анализируйте его в минимальные области при помощи decsg.

Запустите приложение PDE Modeler и нарисуйте модульный круг и модульный квадрат.

pdecirc(0,0,1)
pderect([0 1 0 1])

Введите C1-SQ1 в поле Set formula.

Экспортируйте матрицу описания геометрии, установите формулу и матрицу пространства имен к рабочему пространству MATLAB путем выбирания опции Export Geometry Description в меню Draw.

Разложите экспортируемую геометрию на минимальные области. Результатом является одна минимальная область с пятью сегментами ребра: три круговых сегмента ребра и два сегмента ребра линии.

dl = decsg(gd,sf,ns)
dl =
     2.0000   2.0000    1.0000    1.0000    1.0000
          0        0   -1.0000    0.0000    0.0000
     1.0000        0    0.0000    1.0000   -1.0000
          0   1.0000   -0.0000   -1.0000    1.0000
          0        0   -1.0000         0   -0.0000
          0        0    1.0000    1.0000    1.0000
     1.0000   1.0000         0         0         0
          0        0         0         0         0
          0        0         0         0         0
          0        0    1.0000    1.0000    1.0000

Просмотрите геометрию. Отобразите метки ребра и метки поверхности.

pdegplot(dl,'EdgeLabels','on','FaceLabels','on')
axis equal

Geometry consisting of a unit circle with the first quadrant removed

Для сравнения анализируйте ту же геометрию, не задавая формулу набора sf и матрица пространства имен ns. Этот синтаксис возвращает объединение всех форм в геометрии gd.

dl_all = decsg(gd)
dl_all =
    2.0000    2.0000    2.0000    2.0000    1.0000    1.0000    1.0000    1.0000
         0    1.0000    1.0000         0   -1.0000    0.0000    1.0000    0.0000
    1.0000    1.0000         0         0    0.0000    1.0000    0.0000   -1.0000
         0         0    1.0000    1.0000   -0.0000   -1.0000         0    1.0000
         0    1.0000    1.0000         0   -1.0000         0    1.0000   -0.0000
    3.0000    2.0000    2.0000    3.0000    1.0000    1.0000    3.0000    1.0000
    1.0000         0         0    1.0000         0         0    2.0000         0
         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0
         0         0         0         0    1.0000    1.0000    1.0000    1.0000

Просмотрите получившуюся геометрию.

pdegplot(dl_all,'EdgeLabels','on','FaceLabels','on')
axis equal

Geometry consisting of a unit circle and a unit square. The geometry has three faces. Face 1 is the part of the circle without the first quadrant. Face 2 is the part of the square located outside the unit circle. Face 3 is the first quadrant of the circle.

Запустите приложение PDE Modeler и нарисуйте модульный круг и модульный квадрат.

pdecirc(0,0,1) 
pderect([0 1 0 1])

Введите C1+SQ1 в поле Set formula.

Экспортируйте матрицу Описания Геометрии, установите формулу и матрицу Пространства имен к рабочему пространству MATLAB путем выбирания опции Export Geometry Description в меню Draw.

Разложите экспортируемую геометрию на минимальные области. Поскольку геометрия является объединением всех областей, C1+SQ1, можно не использовать аргументы, задающие формулу набора и матрицу пространства имен при использовании decsg.

[dl,bt] = decsg(gd)
dl =
    2.0000    2.0000    2.0000    2.0000    1.0000    1.0000    1.0000    1.0000
         0    1.0000    1.0000         0   -1.0000    0.0000    1.0000    0.0000
    1.0000    1.0000         0         0    0.0000    1.0000    0.0000   -1.0000
         0         0    1.0000    1.0000   -0.0000   -1.0000         0    1.0000
         0    1.0000    1.0000         0   -1.0000         0    1.0000   -0.0000
    3.0000    2.0000    2.0000    3.0000    1.0000    1.0000    3.0000    1.0000
    1.0000         0         0    1.0000         0         0    2.0000         0
         0         0         0         0         0         0         0         0
         0         0         0         0         0         0         0         0
         0         0         0         0    1.0000    1.0000    1.0000    1.0000

bt =
     1     0
     0     1
     1     1

Просмотрите геометрию. Отобразите метки ребра и метки поверхности.

pdegplot(dl,'EdgeLabels','on','FaceLabels','on')
axis equal

Geometry consisting of a unit circle and a unit square. The geometry has three faces. Face 1 is the part of the circle without the first quadrant. Face 2 is the part of the square located outside the unit circle. Face 3 is the first quadrant of the circle.

Удалите контуры субдомена при помощи csgdel функция.

[dl2,bt2] = csgdel(dl,bt);

Просмотрите получившуюся геометрию.

figure
pdegplot(dl2,'EdgeLabels','on','FaceLabels','on')
axis equal

Geometry consisting of a unit circle and a unit square fused together into one face

Входные параметры

свернуть все

Матрица описания геометрии в виде матрицы чисел с двойной точностью. Количество столбцов соответствует количеству форм, используемых, чтобы создать геометрию. Каждый столбец в матрице описания геометрии соответствует форме в модели CSG. Модель поддерживает четыре типа форм:

  • Для круга первая строка содержит 1. Вторые и третьи строки содержат x - и y - координаты центра. Четвертая строка содержит радиус круга.

  • Для многоугольника первая строка содержит 2. Вторая строка содержит n, который является количеством линейных сегментов в контуре многоугольника. Следующие строки n содержат x - координаты начальных точек ребер, и строки n после этого содержат y - координаты начальных точек ребер.

  • Для прямоугольника первая строка содержит 3, и вторая строка содержит 4. Следующие четыре строки содержат x - координаты начальных точек ребер, и эти четыре строки после этого содержат y - координаты начальных точек ребер.

  • Для эллипса первая строка содержит 4. Вторые и третьи строки содержат x - и y - координаты центра. Четвертые и пятые строки содержат полуоси эллипса. Шестая строка содержит вращательный угол эллипса, измеренного в радианах.

Все формы в матрице описания геометрии имеют одинаковое число строк. Строки, которые не требуются для конкретной формы, заполнены нулями.

Когда вы экспортируете геометрию из приложения PDE Modeler путем выбора Export Geometry Description, Set Formula, Labels из меню Draw в приложении, можно использовать любое имя переменной для экспортируемой матрицы описания геометрии в рабочем пространстве MATLAB. Именем по умолчанию является gd.

Типы данных: double

Установите формулу в виде вектора символов или строки включая имена форм, такие как C1, SQ2, E3, и операторы +, *, и - соответствуя объединению операций присвоения, пересечению и разности множеств, соответственно. Операторы + и * имейте тот же приоритет. Оператор - имеет более высокий приоритет. Можно управлять приоритетом при помощи круглых скобок.

Когда вы экспортируете геометрию из приложения PDE Modeler путем выбора Export Geometry Description, Set Formula, Labels из меню Draw в приложении, можно использовать любое имя переменной для формулы в рабочем пространстве MATLAB. Именем по умолчанию является sf.

Пример: '(SQ1+C1)-C2'

Типы данных: char | string

Матрица пространства имен в виде матрицы чисел с двойной точностью. Количество столбцов соответствует количеству форм, используемых, чтобы создать геометрию. Каждый столбец в ns содержит последовательность символов, дополненную пробелами. Каждый символьный столбец присваивает имя к соответствующему геометрическому объекту в gd, таким образом, можно обратиться к конкретному объекту в gd в формуле набора sf.

Когда вы экспортируете геометрию из приложения PDE Modeler путем выбора Export Geometry Description, Set Formula, Labels из меню Draw в приложении, можно использовать любое имя переменной для матрицы пространства имен в рабочем пространстве MATLAB. Именем по умолчанию является ns.

Типы данных: double

Выходные аргументы

свернуть все

Анализируемая матрица геометрии, возвращенная как матрица чисел с двойной точностью. Это содержит представление анализируемой геометрии в терминах разделенных минимальных областей, созданных decsg алгоритм. Каждый сегмент ребра минимальных областей соответствует столбцу в dl. Сегменты ребра между минимальными областями являются сегментами границы. Внешние границы являются граничными сегментами. В каждом столбце вторые и третьи строки содержат запуск и окончание x - координаты. Четвертые и пятые строки содержат соответствующий y - координаты. Шестые и седьмые строки содержат левые и правые минимальные метки области относительно направления, вызванного начальными и конечными точками (направление против часовой стрелки на круге и сегментах эллипса). Существует три типа возможных сегментов ребра в минимальной области:

  • Для круговых сегментов ребра первой строкой является 1. Восьмые и девятые строки содержат координаты центра круга. 10-я строка содержит радиус.

  • Для сегментов ребра линии первой строкой является 2.

  • Для сегментов ребра эллипса первой строкой является 4. Восьмые и девятые строки содержат координаты центра эллипса. 10-е и 11-е строки содержат полуоси эллипса. 12-я строка содержит вращательный угол эллипса.

Все формы в анализируемой матрице геометрии имеют одинаковое число строк. Строки, которые не требуются для конкретной формы, заполнены нулями.

Номер строки Круговой сегмент ребра Сегмент ребра линии Сегмент ребра эллипса
1124
2запуск x - координатазапуск x - координатазапуск x - координата
3окончание x - координатаокончание x - координатаокончание x - координата
4запуск y - координатазапуск y - координатазапуск y - координата
5окончание y - координатаокончание y - координатаокончание y - координата
6оставленная минимальная метка областиоставленная минимальная метка областиоставленная минимальная метка области
7правильная минимальная метка областиправильная минимальная метка областиправильная минимальная метка области
8x- центра x- центра
9y- центра y- центра
10радиус круга x- перед вращением
11  y- перед вращением
12  

Угол в радианах между x - ось и первой полуосью

Типы данных: double

Булева таблица, связывающая исходные формы с минимальными областями, возвращенными как матрица 1 с и 0s.

Типы данных: double

Ограничения

  • В редких случаях decsg может ошибка или создавать недопустимую геометрию из-за ограничений ее алгоритма. Такие проблемы могут произойти, когда два или больше ребра геометрии частично перекрываются, почти совпадают или являются почти касательной.

Советы

  • decsg не проверяет модель входа CSG на правильность. Это принимает, что никакие круги или замещающие знаки не идентичны или ухудшились и что никакие линии не имеют нулевую длину. Многоугольники не должны самопересекаться.

  • decsg возвращает NaN если это не может оценить формулу набора sf.

Представлено до R2006a