decsg

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

Описание

пример

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 функция при создании геометрии без использования приложения См. 2-D создания геометрии в командной строке для получения дополнительной информации.

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

пример

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

Примеры

свернуть все

Создайте 2-D геометрию в приложении 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

Для сравнения разложите ту же геометрию, не задавая формулу набора 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

Запустите приложение 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

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

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

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

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

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

свернуть все

Матрица описания геометрии, заданная как матрица с числами двойной точности. Количество столбцов соответствует количеству форм, используемых для построения геометрии. Каждый столбец в матрице описания геометрии соответствует форме в модели 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 -cordinateстартовый x -cordinateстартовый x -cordinate
3конечный x -cordinateконечный x -cordinateконечный x -cordinate
4стартовый y -cordinateстартовый y -cordinateстартовый y -cordinate
5конечный y -cordinateконечный y -cordinateконечный y -cordinate
6метка минимальной области слеваметка минимальной области слеваметка минимальной области слева
7правая минимальная метка областиправая минимальная метка областиправая минимальная метка области
8x -координата центра x -координата центра
9y -координата центра y -координата центра
10радиус окружности x -семиаксис перед вращением
11  y -семиаксис перед вращением
12  

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

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

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

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

Ограничения

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

Совет

  • decsg не проверяет вход модели CSG. Он принимает, что никакие круги или эллипсы не являются идентичными или вырожденными и что никакие линии не имеют нулевой длины. Многоугольники не должны быть самопересекающимися. Используйте функцию csgchk для проверки модели CSG.

  • decsg возвращает NaN если он не может вычислить заданную формулу sf.

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