Добавил:
sergeevpavel0406@mail.ru СОВА Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика в техническом университете / Информатика в техническом университете. Компьютерная графика

.pdf
Скачиваний:
88
Добавлен:
06.03.2018
Размер:
6.96 Mб
Скачать

3.4. Твердотельное моделирование

лов. Назовем фиксированными такие циклы старой границы, у которых ни одно ребро не вошло в перестроенные циклы. Среди старых фиксированных циклов выберем такие, которые целиком лежат внутри новых внешних циклов. Их следует включить в состав новой перестроенной границы грани.

Кроме того, следует принять решение о включении в состав границы внешних фиксированных циклов. Если существует новый цикл, который не принадлежит никакому новому внешнему циклу, а расположен внутри старого фиксированного цикла, то последний включается в состав перестроенной границы.

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

Таким образом, задача реструктуризации граней пресекающихся тел решена. Для получения результирующего тела требуется добавить все грани, которые не участвовали в пересечении, но топологически связаны с измененными гранями. Для этого достаточно последовательно рассмотреть все ребра, входящие в оболочку нового тела, и включить в состав границы такие смежные с ребрами грани, которые отсутствуют в полученном описании.

3.4.6. Модели пространственного разбиения

Пространственное разбиение (spatial-partitioning) — представление трехмерных объектов в виде совокупности непересекающихся элементарных пространственных форм — примитивов. Примитивы выполняют функции геометрических строительных элементов и могут различаться типом, параметризацией, размерами, пространственной ориентацией и другими свойствами формы, положения и описания. Степень декомпозиции трехмерного объекта и выбор примитивов определяются сложностью формы и целями моделирования.

Декомпозиционная модель

Одним из наиболее общих видов описания, основанных на пространственном разбиении, является так называемая декомпозиционная модель (cell decomposition) трехмерной геометрии. В каждой системе моделирования декомпозиционного типа задается множество параметризованных геометрических примитивов и набор допустимых операций. Множество операций обычно ограничивается различными вариантами упрощенного булевского объединения объектов. Упрощение может состоять в обработке непересекающихся операндов или операндов, имеющих общую вершину, ребро или грань. В декомпозиционных системах моделирования трехмерных объектов подобные операции называются склеиванием. Генерация формы трехмерного тела реализуется по принципу снизу вверх,

255

3. Математические модели геометрических объектов

Рис. 3.64. Геометрические примитивы

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

Представление трехмерного тела в виде композиции геометрических примитивов является вполне однозначным, однако обратный переход от формы к набору элементов не обладает этим свойством. Простой пример, приведенный на. рис. 3.64 и 3.65, подтверждает этот тезис. Трехмерное тело, показанное на рис. 3.65, можно получить различными вариантами склейки параметризованных геометрических примитивов: призмы и параллелепипеда.

В общем случае моделирование пространственных тел посредством декомпозиции требует значительных вычислительных ресурсов. Достаточно сказать, что каждую пару примитивов, участвующих в образовании результирующего тела, иногда требуется проверить на непересечение. Существуют проектные ситуации, требующие и других проверочных мероприятий для декомпозиционных форм. Несмотря на отмеченные недостатки, этот способ моделирования нашел широкое применение в системах конечно-элементного анализа и автоматизированного проектирования.

Воксельное описание

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

Рис. 3.65. Составные объекты, полученные склеиванием примитивов

256

3.4. Твердотельное моделирование

•Рис. 3.66. Воксельное представление трехмерного тела

по аналогии с двухмерной растровой графикой, где функции графических атомов выполняют пикселы, называются вокселами (voxels, volume elements).

Для описания трехмерной формы в этой модели следует принять решение о наличии или отсутствии элементов на позициях регулярной сетки. Это дает точное и единственное представление формы пространственного тела.

На рис. 3.66 показан пример описания трехмерного тела в терминах пространственных пикселов — пластинчатого тела с выбранным углом и отверстием.

Воксельная модель отличается не только предельной простотой определения, по сравнению с другими средствами трехмерной графики она характеризуется несколькими очевидными преимуществами в вычислениях. Например, элементарное решение в этой модели имеет задача определения принадлежности ячейки телу или проблема пересечения двух тел. Для объемного растра просто рассчитать такие важные для любого технического проекта параметры, как массу и момент инерции. Они находятся простым сложением соответствующих параметров отдельных примитивов. Воксельная модель описывает геометрию объемного тела и при этом автоматически определяет часть пространства, расположенную за пределами объекта, что позволяет использовать данное описание для моделирования и расчета тел с полостями. Применяется она и для формализации среды в задачах моделирования поведения роботов и манипуляторов.

Достоинства и недостатки воксельного описания совпадают со свойствами плоских растровых моделей.

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

257

3. Математические модели геометрических объектов

/

/(5

а

б

Рис. 3.67. Растровое пространство в процессе разбиения: а — второй шаг; б — последний шаг

вов. С ростом размерности это число увеличивается очень быстро, в случае пространственных форм сложной конфигурации и большой размерности может привести к перерасходу вычислительных ресурсов, прежде всего оперативной памяти.

Несмотря на отмеченные недостатки, системы, основанные на воксельном описании, нашли широкое применение в биомедицинских приложениях — с их помощью представляются трехмерные сканы, полученные современными компьютерными томографами.

Восьмеричные деревья

Восьмеричные деревья — один из способов экономичного представления пространственного растра. Этот тип деревьев представляет собой расширение квадратичных деревьев, которые служат информационной моделью обычного плоского растра. Данный способ представления пространственного растра используется с начала 60-х годов прошлого века.

Квадратичные деревья описывают процедуру последовательного деления двухмерного массива точек на квадранты. Рассмотрим правила построения этих объектов на примере плоской детали, показанной на рис. 3.67. Пространство плоского растра будем последовательно делить на квадранты. Квадрант, закрашенный полностью, обозначим буквой F (full), закрашенный частично — Р (partial), а свободный от закраски — Е (empty). Первое разбиение состоит из четырех больших квадрантов, граница которых проходит по самой середине массива точек. Все элементы первого шага разбиения являются частично окрашенными и получают пометку Р.

Порядок деления, сохраняющийся на всех операциях декомпозиции растрового поля, показан на рис. 3.68. Именно в этом порядке записываются вершины квадратичного дерева.

258

3 4
1 2
Рис. 3.68. Порядок перечисления квадрантов

3.4. Твердотельное моделирование

Результаты второго шага разбиения представлены на рис. 3.67, а. Рисунок показывает, что на этом этапе появляются полностью закрашенные квадранты. Деление таких объектов не дает новой информации, поскольку элементы закрашенных квадрантов всегда являются закрашенными, а элементы пустых — пустыми. Процедуру разбиения растрового поля на квадранты принято представлять в виде квадратичного дерева. Его вершиной является исходное поле, а висячими вершинами служат закрашенные или свободные от закраски

квадранты, записанные в последовательности, изображенной на рис. 3.68.

На рис. 3.69 показан фрагмент квадратичного дерева, описывающего двухмерный растр из примера, изображенного на рис. 3.67. Полный вид этого дерева довольно громоздок, поэтому некоторые частично заполненные вершины не получили продолжения до уровня висячих вершин.

Путем обрезания дерева в полных и пустых вершинах достигается заметная экономия выразительных средств и памяти вычислительной системы. Тем не менее растры высокой размерности для описания могут потребовать очень больших квадратичных деревьев. Исследователями в области машинной геометрии предложено несколько способов сокращения их размеров. Один из возможных подходов состоит в аппроксимации квадрантов с частичным заполнением. В большинстве проектных ситуаций область со значительным преобладанием заполненных ячеек можно считать полной, и наоборот, квадрант, имеющий небольшое заполнение, рассматривается как пустой. Принять решение о квадрантах с частичным заполнением позволяют пороговые значения плотностей.

Рис. 3.69. Фрагмент квадратичного дерева

259

3. Математические модели геометрических объектов

 

 

 

Описанный подход можно распро-

 

 

 

странить и на пространственный растр.

 

 

 

Дискретное трехмерное пространство под-

/

3 / 4

 

вергается

последовательному делению на

 

кубы. Для описания процедуры простран-

 

 

 

ственной декомпозиции используются так

7

8

 

называемые восьмеричные, или октантные,

7

 

 

деревья.

Корнем восьмеричного дерева

5

6

 

служит исходный трехмерный растр, а его

 

 

 

 

 

 

висячими вершинами — целиком запол-

5

6

 

ненные или пустые октанты.

 

 

 

Примем соглашение о наименовании

 

 

 

октантов. Поскольку не существует обще-

 

 

 

принятой системы нумерации октантов, бу-

Рис. 3.70. Нумерация октантов

дем различать их по направлениям, которые

они занимают относительно центра роди-

 

 

 

 

 

 

тельского объекта. Обозначим направления

координатных осей через L

— налево (left), R — направо (right), U— вверх (up),

D — вниз (down), F — вперед (front), В — назад (back). Теперь октанты можно обозначить в соответствии с занимаемой позицией: LUF, LUB, LDF, LDB, RUF, RUB, RDF и RDB. Для экономии изобразительных средств зададим направлениям порядковую нумерацию, начинающуюся с единицы. Соответствие номеров и октантов показано на рис. 3.70; октанты с номером 1 здесь не показаны.

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

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

Вчетвертичном дереве соответствующие вершины являются висячими и не нуждаются в уточнении. Описания требуют только частично заполненные квадранты, лежащие на границе. Аналогичная зависимость существует между площадью поверхности объемного тела и числом вершин восьмеричного дерева.

Булевские операции и преобразования растров

Исследователями в области КГ были выполнены изыскания в области разработки эффективных алгоритмов для расчета и хранения четвертичных и восьмеричных деревьев. Оказалось, что многие задачи вычислительной геометрии допускают простые и экономичные решения в терминах пространственных и плоских растров. Так, невысокой трудоемкостью расчета обладают булевские операции объединения, вычитания и пересечения.

Рассмотрим способ нахождения булевского объединения двух растровых представлений. Пусть двухмерные тела А и В заданы в виде квадратичных деревьев. Обозначим С их булевскую сумму. Чтобы получить квадратичное дерево

260

3.4. Твердотельное моделирование

тела С, будем просматривать деревья операндов параллельно от корня к листьям. По заполнению одноименных узлов операндов легко найти состояние соответствующего узла результата.

Если хотя бы один из узлов операндов является черным (заполненным), то в данной области плоского растра существует непустое булевское объединение. Если один из узлов является белым (незаполненным), то у дерева объекта С создается узел соответствующего положения, цвет которого зависит от цвета узла другого операнда. Если оба исходных узла оказались серыми (частично заполненными), то к дереву фигуры С добавляется соответствующая серая вершина, а алгоритм рекурсивно применяется к потомкам обработанных узлов обоих операндов. Если в процессе создания дерева С все потомки некоторой вершины получили черный (белый) цвет, то они удаляются из С, а их родительская вершина окрашивается в черный (белый) цвет. Алгоритм прекращает работу после просмотра всех вершин исходных деревьев.

На рис. 3.71 показаны два простых двухмерных растровых объекта со своими квадратичными деревьями, а на рис. 3.72 приведены результаты булевского объединения и вычитания этих операндов и древесные модели результирующих объектов.

Многие задачи геометрических преобразований объектов, заданных в виде квадратичных и восьмеричных деревьев, имеют простые алгоритмические решения. Так, для реализации поворота объекта на 90° требуется применить процедуру рекурсивной обработки ко всем потомкам вершин каждого уровня. Просто решается и задача зеркального отражения и масштабирования тела с любым целым коэффициентом преобразования. Сложнее выполняется расчет перемещения и сглаживания объектов.

А

В

Рис. 3.71. Двухмерные растровые объекты (а) и их квадратичные деревья (б)

261

3. Математические модели геометрических объектов

n\j п

А-В

Iffci

а

б

Рис. 3.72. Представление булевских операций в виде квадратичных деревьев: а — булевское сложение; б — булевское вычитание

Поиск соседей

Топология реальных объектов изобилует неоднородностями. Вклад в негомогенный характер растрового описания вносит разбиение формы на грани, ребра и вершины. Если представить плоский или пространственный растр в виде дерева, то сведения о соседстве пикселов или вокселов будут недоступны для непосредственного использования. Для восстановления информации о совокупности растровых элементов, образующих грань или ребро, требуется разработать алгоритм нахождения соседей выбранной вершины. С этой задачей сталкиваются во многих ситуациях, связанных с обработкой квадратичных или восьмеричных деревьев.

Элемент квадратичного дерева в общем случае может иметь восемь соседей, расположенных в разных направлениях на плоском поле растра. Следуя английской традиции, обозначим четыре основных направления первыми буквами сторон света: N — север (North), S — юг (South), Е — восток (East), W — запад (West). Диагональные направления получат естественные обозначения: NW, NE, SW и SE. Элементы восьмеричных деревьев могут иметь до 26 возможных соседей по числу направлений в пространственном растре: 6 — в направлении граней, 12 — в направлении ребер и 8 — в направлении вершин.

~ Во всех случаях решением задачи является один из потомков родительской вершины, общей для данной вершины и ее соседа. Процедура поиска вершины, соседствующей с выбранной в данном направлении, основана на исследовании дерева. Сначала ищется ближайший общий предок текущей вершины и ее сосе-

262

3.4. Твердотельное моделирование

4И6Й НУ.

Рис. 3.73. Поиск соседей по квадратичному дереву

да, затем поддерево просматривается в направлении сверху вниз для определения искомого соседа.

Рассмотрим самый простой случай, когда в восьмеричном дереве поиск ограничен направлениями нормалей к граням куба, которые будем обозначать L (Left), R (Right), U (Up), D (Down), F (Front) и В (Back). Обозначим выбранное направление поиска d. Будем подниматься по дереву вверх, начиная от выбранной вершины. Общий предок представляет собой первую вершину, которая не может быть достигнута из своего потомка в направлении d. Пусть для примера поиск ведется в направлении левого соседа L. Тогда первый общий предок представляет собой первую вершину, которая не может быть достигнута из потомков, лежащих в направлениях LUF, LUB, LDF или LDB. Это утверждение справедливо, поскольку вершина, достижимая из своих потомков в указанных направлениях,

не может иметь левого соседа.

 

После нахождения общего предка оп-

 

ределяется

поддерево,

имеющее этого

 

предка в качестве своего корня. Искомое

 

решение лежит на пути, который ведет из

 

корня поддерева и является зеркальным от-

 

ражением

маршрута,

проложенного из

 

стартовой вершины.

 

 

Рассмотрим этот метод на примере квад-

 

ратичного дерева (рис. 3.73), задающего

 

двухмерный объект, показанный на рис. 3.74.

 

Цифрами 1-4 помечены основные направле-

 

ния двухмерного поля (см. рис. 3.68). Пусть в

 

этой ситуации требуется найти северного со-

Рис. 3.74. Двухмерный растровый

седа вершины А.

 

объект

263

Рис. 3.75. Пример трехмерного объекта

3. Математические модели геометрических объектов

Восходящая фаза поиска начинается с вершины А (см. рис. 3.73). Эта вершина является AW-предком (северо-западным) для своего непосредственного родителя. Весь путь до искомой родительской вершины показан на рис. 3.73 толстой линией. Его образуют два предка, лежащих в направлении NW, и один в направлении SW. В нашем случае корневая вершина дерева служит искомым предком, поскольку она достигнута в направлении SW. В этом направлении даже частично не используется направление N, выбранное для поиска соседа.

Далее для поиска решения следует проложить маршрут в нисходящем направлении. Он начинается в корневой вершине и представляет собой зеркальное отражение восходящего маршрута (показанного на рис. 3.73 толстой линией) относительно меридиана NS.

Решением задачи поиска северного соседа вершины А служит вершина В квадратичного дерева.

3.4.7. Конструктивная твердотельная геометрия

Конструктивной твердотельной геометрией (Constructive Solid Geometry — CSG) называется способ описания трехмерных объектов, основанный на некотором наборе базовых геометрических примитивов и операциях над ними. Программные реализации этого подхода используют различные множества операций и операндов, но чаще всего в набор базовых форм входят простые геометрические тела, имеющие точное математическое описание, а разрешенными преобразованиями служат регулярные булевские операции.

Любой объект, полученный методом конструктивной геометрии, можно представить в виде дерева, в котором висячими вершинами являются базовые примитивы, внутренние вершины представляют собой промежуточные формы и результаты применения булевских операций, а корень соответствует готовому объекту. В общем случае булевские операции не являются коммутативными, поэтому вершины каждого уровня CSG-дерева считаются упо-

рядоченными.

На рис. 3.75 приведен пример простого трехмерного объекта, который представляет собой плоскую деталь с одним сквозным отверстием.

Дерево, показанное на рис. 3.76, описывает геометрию детали в терминах базовых форм и булевских операций над ними.

Физические свойства корневого объекта и его графическое представление зависят от примитивов, поставленных в соответствие листьям CSG-дерева. Для их нахождения требуется применить стратегию исследования дерева, на-

264