- •Введение
- •1. Модели. Элементы моделей
- •2. Построение кривых
- •3. Построение поверхностей
- •4. Типы моделей
- •5. Полигональные сетки
- •6. Описание геометрических форм
- •6.1. Описание поверхностей. Параметрическое описание поверхностей
- •Эллипсоид
- •Xacoscos,
- •Общие случаи нормали к поверхности
- •Описание поверхностей неявными функциями
- •6.2. Поточечное описание поверхностей.
- •6.3. Синтез изображений методом обратной трассировки лучей
- •Система координат, применяемая в методе обратной трассировки лучей
- •6.4. Способы представления моделей геометрических объектов
- •6.5. Кривые и поверхности nurbs
- •7. Структура твердотельной модели
- •8. Синтез твердого тела по процедурному описанию
- •8.1 Векторная полигональная модель
- •8.2. Воксельная модель
- •8.3. Равномерная сетка
- •8.4. Неравномерная сетка. Изолинии
- •9. Преобразование моделей описания поверхности
- •10. Понятие кубических сплайнов
- •11. Интерполяция b-сплайнами
- •12. Выпуклые оболочки
- •Основные понятия и идеи
- •12.1. Метод обхода грэхема
- •12.2. Обход методом джарвиса
- •13. Геометрмческое моделирование криволинейных объек тов с использованием барицентрических координат
- •13.1. Линейная интерполяция и барицентрические координаты
- •13.1.1. Барицентрические координаты на прямой
- •13.1.2. Барицентрические координаты на плоскости
- •13.1.3. Барицентрические координаты в пространстве
- •13.2. Метод определения точек, инцидентных треугольной порции поверхности, по заданным локальным координатам
- •13.2.1. Алгоритм задания квадратичной параболы
- •13.2.2. Анализ алгоритма кастельжо для произвольной кривой
- •13.2.3. Обобщённый алгоритм для треугольной порции поверхности
- •13.3. Аппроксимация поверхностей обобщенными полиномами бернштейна
- •13.3.1. Свойства треугольной порции поверхности безье
- •13.3.2. Свойства обобщенных полиномов бернштейна
- •14. Особенности аппроксимации обводов параметрическими полиномами в форме бернштейна
- •14.1. Методы полиномиальной аппроксимации одномерных обводов
- •14.1.1. Общая постановка задачи аппроксимации дискретного набора данных
- •14.1.2. Аппроксимация обводов параметрическими полиномами
- •14.1.3. Аппроксимация обводов параметрическими полиномами бернштейна
- •14.2. Геометрические свойства производных полиномов бернштейна
- •14.2.1. Вычисление первой производной
- •14.2.2. Вычисление производных высшего порядка
- •14.3. Методы полиномиальной аппроксимации двумерных обводов
- •Метод тензорного произведения
- •Каркасный метод
- •14.3.3. Метод булевой суммы (поверхности Кунса)
- •15. Стандарты в графических системах сапр и современные растровые графические файлы
- •15.1. Графические системы класса 2d
- •15.2. Графические системы класса 3d
- •15.3. Стандарты обмена данными
- •16. Системы подготовки и выпуска конструкторско-технологической документации. Организация конструкторской подготовки производства
- •17. Графические диалоговые системы
- •17.1. Краткий обзор зарубежных cad-систем
- •Технологические модули в pt/Products. Интеграция процессов проектирования и изготовления
- •Работа со стандартными библиотеками посредством pt/LibraryAccess и pt/Library
- •17.2. Отечественные разработки
- •Компас 5
- •T-flex cad
- •Заключение
- •394026 Воронеж, Московский просп., 14
6.3. Синтез изображений методом обратной трассировки лучей
Трассировка лучей связана с моделированием геометрического пути каждого светового луча, участвующего в построении изображения. Трассировка лучей - моделирование лучевой оптики применительно к задачам компьютерной графики.
Основная идея метода
ЭВМ повторяет все геометрические преобразования, происходящие с каждым световым лучом на пути источник - объект - приемник. Хотя бесконечное количество для построения изображения достаточно ограничится рассмотрением тех лучей, которые попадают в центр рецептора или исходят из ограниченного числа точек на изображаемую поверхность. Подобно некоторым разделам геометрической оптики при компьютерном моделировании реальный ход лучей в объективах не анализируется. Для построения изображения используют кардинальные элементы оптической системы (главная и фокальная точки, а также соответствующие плоскости).
В соответствии с принципами геометрической оптики сопряженные точки в пространстве предметов и изображений лежат на прямой, проходящей через заднюю главную точку оптической системы. На основании закона обратимости можно синтезировать путь луча как в направлении объект - изображение, так и в обратном. Отсюда различия между прямой и обратной трассировкой лучей.
При прямой трассировке за исходную позицию берется вычисляемая на изображаемой поверхности точка 1, из нее моделируется путь луча на источник света 2 и на приемник изображения - точка 3.
При обратной трассировке берется центр рецептора 1 на приемнике изображения и моделируется путь луча на объект 2 и далее на источник света - точка 3.
Система координат, применяемая в методе обратной трассировки лучей
Сцена- совокупность изображаемых объектов, включая при необходимости поверхность основания.
Система координат сцены- правая прямоугольная система координат, общая для всей сценыXcYcZc.
Объект- совокупность точек пространства, объединенных функциональной общностью с точки зрения конкретно-целевой задачи.
Соответственно для каждого объекта вводится своя правая прямоугольная система координат XYZ.
Экранная система координат- система координатX1Y1Zнаблюдательной системы. Данная система координат выбирается левой.
По аналогии cфизическими устройствами осьzсоответствует главному лучу объектива, плоскостьxy- задней фокальной плоскости, а центр проекцииFрасполагается на осиOZв точке (0,0,f) и сопоставляют с задней главной точкой объектива.
6.4. Способы представления моделей геометрических объектов
В общем случае в любой геометрической модели можно выделить две составляющие ее части (уровни):
набор структурных элементов. Например, в полигональной модели это вершины, ребра и грани;
топология, т.е. собственно структура, определяющая способ взаимосвязи элементов.
Структурный элемент как геометрический объект, вообще говоря, можно представить одним из способов: 1) параметрически (функциональная зависимость координат от переменных параметров):
2) неявно:
где m – размерность пространства (1 – одномерное, 2 – двумерное, 3 – трехмерное);
n – размерность элемента (0 – нульмерный, определяет точку; 1 – одномерный, определяет линию; 2 – определяет поверхность);
- m-мерная вектор-функция, определяющая форму параметрического элемента;
- m-мерная вектор-функция, задающая пределы изменения параметров;
- m-мерная вектор-функция, определяющая неявное уравнение геометрического элемента;
- m-мерный нулевой вектор.
Как видно, неявное задание геометрического объекта более компактное. Тем не менее параметрическому заданию отдается предпочтение в силу его удобства для решения задач нахождения:
- точки, принадлежащей объекту;
- нормали к кривой или поверхности;
- осуществления мэппинга поверхности.
В зависимости от значений m и n сведем геометрические объекты для параметрического их представления в следующую таблицу.
Таблица 1
Классификация элементов геометрических объектов
m\n |
0 |
1 |
2 |
1 |
точка прямой |
отрезок прямой |
- |
2 |
точка плоскости |
линия на плоскости |
область на плоскости |
3 |
точка в пространстве |
пространственная линия |
область в пространстве |
Из таблицы видно, что m <= n. Будем ссылаться на данные элементы обозначением (m\n)-элемент. Например, (2\1) – это линия на плоскости.
Имея данные структурные элементы, можем конструировать из них различную топологию, выражающую отношения между структурными элементами, например, с помощью таблиц или с использованием теории множеств. Так ломаную можно представить двумя множествами:
V – множество вершин ((2\0)-элементов);
Е = {vi, vj}– множество ребер.
Рассмотрим распространенную классификацию существующих способов представления трехмерных геометрических объектов (моделей):
- простейшие способы;
- граничное задание;
- объемное задание.
К простейшим способам задания трехмерных объектов относятся точечное и проволочное (каркасное) представления. В точечном представлении объект задан совокупностью вершин, принадлежащих поверхности объекта V = {V1,…,Vn}.
Проволочная модель является расширением предыдущего способа. Объекты задаются совокупностью вершин и соединяющих их ребер (отрезков прямой или кривой):
V = {v1,…,vn}, Е = {vi, vj [fk(u)]},
где fk(u) – это (3\1)-элемент, используемый, если ребро не является отрезком прямой, соединяющей вершины vi, vj. Как правило, для одной модели fk является вектор-функцией одного и того же типа.
Основное преимущество этих способов - простота представления. Потому они применяются на промежуточных стадиях работы с геометрическим объектом: предварительная визуализация и как исходные модели для синтеза более сложных моделей.
Поверхностное (граничное) задание моделей. Поверхностное представление объекта подразумевает точное математическое описание. Исходя из вышеприведенной классификации существует два основных способа описания поверхности: явное параметрическое и в виде неявных функций. Общий вид параметрической поверхности следующий:
,
где для параметров u и v, как правило, определяют область определения либо прямоугольного (ua < u < ub, va < v < vb), либо треугольного (ua < u < ub, va < u + v < vb) вида.
Можно выделить два основных типа поверхностных параметрических моделей:
- полигональная модель, которая представлена набором плоских граней;
- патч-модель, или лоскутная модель. В данном случае гранями служат части поверхностей одного типа (билинейные, поверхности Кунса, бикубические поверхности, поверхности Безье, поверхности на основе B-сплайнов).
Поверхностное задание трехмерных объектов является наиболее распространенным, и для него сформировались следующие разновидности топологий:
Список вершин. В этой топологии грань выражается через вершины:
V = {vi} – вершины |V| = n;
F = {(vj1, vj2,…, vjk[, fj(u,v)]) } – грань (или патч fj), состоящая из k вершин (k >= 3).
Список ребер. Здесь грань выражена через ребра:
V = {vi} – вершины |V| = n;
Е = {ek= (vi, vj[fk(u)])} – ребро. fk– уравнение линии;
F = {(ej1, ej2,…,ejk[fj(u,v)])} – грань (или патч fj), состоящая из k ребер (k >= 3).
«Крылатое» представление. Эта модель является развитием модели, основанной на информации о ребрах. Отличие состоит в том, что в структуру, описывающую ребра, добавляется информация о взаимном расположении граней. Она включает:
V = {vi} – вершины |V| = n;
E = { ek= (vstart, vend, ncw, nccw, [fk(u)])} – ребро, где vstart– начало ребра, vend– конец ребра, ncw– следующее (предыдущее) ребро в той грани, где ekвстречается в положительном направлении обхода вершин, nccw– следующее (предыдущее) ребро в другой грани (где ekвстречается в отрицательном направлении);
F = { (first_edge, sign [fj(u,v)]) } – грань (или патч fj), где first_edge – первое ребро в цепочке представления грани, sign – знак (+/-), определяющий, в каком направлении встречается ребро first_edge в данной грани.
«Крылатое» представление является наиболее удобным для реализации важнейших алгоритмов над геометрическими объектами:
- проверка правильности задания;
- алгоритмы для полигональных моделей, связанные с обходом ребер (выделение плоских контуров, упрощение модели путем удаления граней и другие).
Кроме того, не более чем за линейное время можно восстановить любую другую топологию, следуя по цепочкам связей между элементами.
В объемном представлении базовыми являются (3\2)-элементы или неявно представленные примитивы. Наиболее известны:
- воксели;
- метаболы;
- сплошные конструктивы.
Основой воксельного представления служит так называемый воксель (или ячейка), представляющий собой кубическую область пространства. Трехмерный объект определяется как массив вокселей. Можно выделить следующие топологии воксельного объекта:
простейшая – набор одинаковых вокселей, аппроксимирующий область пространства, занимаемую объектом;
V = { ({L} x {M} x {N}, {1,0}) } – элементу трехмерного массива вокселей размером L x M x N ставится в соответствие его заполненность (принадлежность объекту);
октальное дерево – рекурсивное разбиение пространства на 8 частей. При этом устанавливается некоторый минимальный размер вокселя. Лист дерева помечается заполненным, если он полностью принадлежит объекту. Таким образом, топология представлена в виде дерева;
PM-октальные деревья – это гибрид октального дерева и полигональной модели для уменьшения погрешности аппроксимации при достижении минимального размера вокселя в рекурсивном разбиении пространства.
Воксельное представление является очень удобным для реализации пространственных алгоритмов и теоретико-множественных операций над объектами (объединение, вычитание, пересечение), но обладает рядом недостатков, которые ограничивают область его применения:
- низкая точность для представления для большинства
объектов;
- большой объем занимаемой памяти.
Метаболы – это шары различного радиуса (r), которые могут взаимодействовать в зависимости от близости и радиуса взаимодействия (R): Сфера = (координаты, радиус, вещество). Взаимодействие выражается через появление дополнительной «материи» между ними (см. рис. 5). Топология, как таковая, здесь отсутствует.
Рис. 5. Взаимодействие двух метаболов
При представлении объекта в виде сплошных конструктивов используют два набора:
- базовый набор примитивов (параллелепипед, сфера, конус, цилиндр, тор, призма, пирамида и т.п.), являющихся структурными элементами объекта;
- базовый набор теоретико-множественных операций: унарного аффинного преобразования (T) и бинарных операций вычитания (-), пересечения (*), объединения (+). Данный набор определяет топологию модели, которая реализуется в виде формулы теории множеств.
Например, если мы имеем три примитива A, B, C и формулу (A + T(B)) * C, то это означает, что мы объединяем объект А с трансформацией объекта В и пересекаем его с объектом С. Преимущество данного способа представления заключается в том, что таким образом можно относительно легко моделировать достаточно сложные объекты.
3 Параметрическое задание геометрических объектов
Как упоминалось ранее, параметрическое задание подразумевает функциональную зависимость координат точек объекта от некоторых параметров. Для линий используется функция одной переменной:
p = F(u) = (Fx(u), Fy(u), Fz(u)),
а для поверхности – функция двух переменных:
p = F(u, v) = (Fx(u, v), Fy(u, v), Fz(u, v)).
Вообще говоря, вид функции F может произвольной. Но на практике ограничивают набор функций, которые представляют наиболее часто встречающиеся геометрические объекты, из которых затем составляют более сложные. К ним относятся:
1) плоские линии: прямые, окружности, эллипсы и их отрезки, спирали Архимеда, эквидистанты;
2) пространственные линии: спирали;
3) поверхности: плоские, сферические, цилиндрические, конические, торические, пружинные.
Как видно, их перечень невелик. А потому для моделирования кривых и поверхностей, которые не вписываются в этот набор, используется сплайны и патчи. Наиболее употребляемые виды сплайнов: сплайны Безье, B-сплайны (NURBS). Среди патчей можно выделить: патчи NURBS, Безье-патчи, N-патчи, билинейные патчи, патчи Кунса. Тем не менее большинство пакетов использует эти инструменты для аппроксимации вышеперечисленных кривых и поверхностей и не имеют автоматических средств для аппроксимации пользовательский кривых (параболы, гиперболы, синусоиды) и поверхностей (параболоиды, конусы с образующей заданного вида и др.) с помощью перечисленных сплайнов и патчей.
Данная работа как раз и посвящается изучению и разрешению данной проблемы. Сформулируем основные задачи, которые должны быть при этом решены:
1) гибкость и универсальность определения пользовательских функций (расширяет область применения);
2) высокая скорость вычисления (обеспечивает возможность построения интерактивных приложений);
3) контролируемая точность аппроксимации функций (обеспечивает адекватность оценки полученных результатов);
4) минимизация результата аппроксимации (экономит память);
5) взаимодействие с другими системами;
6) универсализация механизма синтеза геометрических моделей.