exponenta event banner

decsg

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

Описание

пример

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

Как правило, геометрия прорисовывается в приложении PDE Modeler, а затем экспортируется в командное окно MATLAB ®, выбирая в меню «Рисование» в приложении команды «Экспорт описания геометрии», «Задать формулу», «Метки».gd представляет модель CSG. decsg анализирует модель и создает набор разделенных минимальных областей, ограниченных граничными сегментами и граничными сегментами. Этот набор минимальных областей составляет разложенную геометрию и позволяет другим функциям 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 в поле Задать формулу.

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

Экспортируйте матрицу Описание геометрии (Geometry Description), задайте формулу и матрицу Пространство имен (Name Space) в рабочее пространство 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 с помощью команд Экспортировать описание геометрии, Задать формулу, Метки в меню Рисование в приложении можно использовать любое имя переменной для экспортированной матрицы описания геометрии в рабочем пространстве MATLAB. Имя по умолчанию: gd.

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

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

При экспорте геометрии из приложения PDE Modeler с помощью команд «Экспорт описания геометрии», «Задать формулу», «Метки» в меню «Рисование» приложения можно использовать любое имя переменной для формулы в рабочей области MATLAB. Имя по умолчанию: sf.

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

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

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

При экспорте геометрии из приложения PDE Modeler с помощью команд «Экспортировать описание геометрии», «Задать формулу», «Метки» в меню «Рисование» приложения можно использовать любое имя переменной для матрицы «имя-пространство» в рабочей области 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правая метка минимальной областиправая метка минимальной областиправая метка минимальной области
8координата x центра координата x центра
9координата центра по оси Y координата центра по оси Y
10радиус окружности x-полуось перед вращением
11  y-полуось перед вращением
12  

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

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

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

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

Ограничения

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

Совет

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

  • decsg прибыль NaN если он не может вычислить формулу набора sf.

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