Во многих приложениях машинной графики возникает потребность в представлении трехмерных тел (вычислительный эксперимент, автоматизация проектирования, роботизация, вычислительная томография, тренажеры, видеографика и т.д.).
Можно выделить две основные задачи, связанные с представлением трехмерных тел, - построение модели уже существующего объекта и синтез модели заранее не существовавшего объекта.
При решении первой задачи в общем случае может потребоваться задание бесконечного количества координат точек. Чаще же всего объект с той или иной точностью аппроксимируют некоторым конечным набором элементов, например, поверхностей, тел и т.п.
При решении второй задачи, выполняемой чаще всего в интерактивном режиме, основное требование к средствам формирования и представления модели - удобство манипулирования.
Используются три основных типа 3D моделей:
· каркасное представление, когда тело описывается набором ребер,
· поверхностное, когда тело описывается набором ограничивающих
его поверхностей,
· модель сплошных тел, когда тело формируется из отдельных
базовых геометрических и, возможно, конструктивно - технологических
объемных элементов с помощью операций объединения, пересечения,
вычитания и преобразований.
Важно отметить, что 3D системы существенно ориентируются на область приложений так как многие характерные для них задачи, выполняемые программным путем, стоят очень дорого и сильно зависят от выбора возможных моделей. Типичными такими задачами, в частности, являются получение сечений и удаление невидимых частей изображения. Обычно имеется много вариантов реализации различных моделей в б\'ольшей или меньшей степени эффективных в зависимости от различных областей приложений и решаемых задач. Поэтому в 3D системах стремятся использовать многообразие моделей и поддерживать средства перехода от одной модели к другой.
Другим важным обстоятельством является то, что для современных систем характерно стремление моделировать логику работы, принятую пользователем. Это требует наличия средств перехода от модели, удобной для пользователя, к модели удобной для визуализации (модели тел в виде граней).
При формировании 3D модели используются:
· двумерные элементы (точки, прямые, отрезки прямых, окружности
и их дуги, различные плоские кривые и контуры),
· поверхности (плоскости, поверхности, представленные семейством
образующих, поверхности вращения, криволинейные поверхности),
· объемные элементы (параллелепипеды, призмы, пирамиды, конусы,
произвольные многогранники и т.п.).
Из этих элементов с помощью различных операций формируется внутреннее представление модели.
Используются два основных способа формирования геометрических элементов моделей - это построение по заданным отношениям (ограничениям) и построение с использованием преобразований.
Построение с использованием отношений заключается в том, что задаются:
· элемент подлежащий построению,
· список отношений и элементы к которым относятся отношения.
Например, построение прямой, проходящей через точку пересечения двух других прямых и касательную к окружности.
Используется два способа реализации построения по отношениям - общий и частный.
При общем способе реализации построение по заданным отношениям можно представить в виде двухшаговой процедуры:
· на основе заданных типов отношений, элементов и параметров
строится система алгебраических уравнений,
· решается построенная система уравнений.
Очевидное достоинство такого способа - простота расширения системы - для введения нового отношения достаточно просто написать соответствующие уравнения.
Основные проблемы такого способа заключаются в следующем:
· построенная система уравнений может иметь несколько решений, поэтому требуется выбрать одно из них, например, в диалоговом режиме,
· система уравнений может оказаться нелинейной, решаемой
приближенными методами, что может потребовать диалога для выбора
метода(ов) приближенного решения.
В связи с отмеченными проблемами общий подход реализован только в наиболее современных системах и при достаточно высоком уровне разработчиков в области вычислительной математики [8].
Большинство же систем реализует частный подход, первым приходящий в голову и заключающийся в том, что для каждой триады, включающей строящийся элемент, тип отношения и иные элементы, затрагиваемые отношением, пишется отдельная подпрограмма (например построение прямой, касательной к окружности в заданной точке). Требуемое построение осуществляется выбором из меню и тем или иным вводом требуемых данных [6,].
Преимущества такого подхода ясны - проще писать систему. Не менее очевидны и недостатки, когда пользователю требуется использовать сильно разветвленные меню и/или запоминать мало вразумительные сокращения или пиктограммы, так как обычно число требуемых вариантов построения исчисляется сотнями. Расширение системы, реализуемое добавлением новой подпрограммы, требует ее перепроектирования, по крайней мере в части обеспечения доступа пользователя к новым возможностям. В некотором смысле предельный пример этого подхода - система AutoCAD фирмы Autodesk. Авторы даже гордятся сложностью системы: "AutoCAD предоставляет эту крайне сложную технологию" (Предисловие к Справочному руководству AutoCAD версии 2.5).
Понятно, что перспективы за общим подходом с разумным использованием частных решений. Вместе с тем устаревшие системы типа AutoCad скорее всего также будут продолжать использоваться в силу распространенности, сложившегося круга обученных пользователей и т.п.
Построение нового объекта с использованием преобразований заключается в следующем:
· задается преобразуемый объект,
· задается преобразование (это может быть обычное аффинное
преобразование, определяемое матрицей, или некоторое деформирующее
преобразование, например, замена одного отрезка контура ломаной),
· выполнение преобразования; в случае аффинного преобразования для векторов всех характерных точек преобразуемого объекта выполняется умножение на матрицу; для углов вначале переходят к точкам и затем выполняют преобразование.
Важное значение при формировании как 2D, так и 3D моделей имеет построение элементарных кривых. Кривые строятся, в основном, следующими способами:
· той или иной интерполяцией по точкам,
· вычислением конических сечений,
· расчетом пересечения поверхностей,
· выполнением преобразования некоторой кривой,
· формированием замкнутых или разомкнутых контуров из отдельных
сегментов, например, отрезков прямых, дуг конических сечений или
произвольных кривых.
В качестве последних обычно используются параметрические кубические кривые, так как это наименьшая степень при которой обеспечиваются:
· непрерывность значения первой (второй) производной в точках сшивки сегментов кривых,
· возможность задания неплоских кривых.
Параметрическое представление кривых выбирается по целому ряду причин, в том числе потому, что зачастую объекты могут иметь вертикальные касательные. При этом аппроксимация кривой y = f(x) аналитическими функциями была бы невозможной. Кроме того кривые, которые надо представлять, могут быть неплоскими и незамкнутыми. Наконец, параметрическое представление обеспечивает независимость представления от выбора системы координат и соответствует процессу их отображения на устройствах: позиция естественным образом определяется как две функции времени x(t) и y(t).
В общем виде параметрические кубические кривые можно представить в форме:
| (0.2.2) |
где параметр t можно считать изменяющимся в диапазоне от 0 до 1, так как интересуют конечные отрезки.
Существует много методов описания параметрических кубических кривых. К наиболее применяемым относятся:
· метод Безье, широко используемый в интерактивных приложениях;
в нем задаются положения конечных точек кривой, а значения первой
производной задаются неявно с помощью двух других точек, обычно не
лежащих на кривой;
· метод В-сплайнов, при котором конечные точки не лежат на
кривой и на концах сегментов обеспечивается непрерывность первой и
второй производных.
В форме Безье кривая в общем случае задается в виде полинома Бернштейна:
|
где Pi - значения координат в вершинах ломаной, используемой в качестве управляющей ломаной для кривой, t - параметр,
|
При этом крайние точки управляющей ломаной и кривой совпадают, а наклоны первого и последнего звеньев ломаной совпадают с наклоном кривой в соответствующих точках.
Предложены различные быстрые схемы для вычисления кривой Безье.
В более общей форме B-сплайнов кривая в общем случае задается соотношением:
|
где Pi - значения координат в вершинах ломаной, используемой в качестве управляющей ломаной для кривой, t - параметр, Nim - весовые функции, определяемые рекуррентным соотношением:
|
|
Используются и многие другие методы, например, метод Эрмита, при котором задаются положения конечных точек кривой и значения первой производной в них.
Общее в упомянутых подходах состоит в том, что искомая кривая строится с использованием набора управляющих точек.
Основные способы построения поверхностей:
· интерполяцией по точкам,
· перемещением образующей кривой по заданной траектории
(кинематический метод),
· деформацией исходной поверхности,
· построением поверхности эквидистантной к исходной,
· кинематический принцип,
· операции добавления/удаления в структуре,
· теоретико-множественные (булевские) операции.
Широко используется бикубические параметрические куски, с помощью которых сложная криволинейная поверхность аппроксимируется набором отдельных кусков с обеспечением непрерывности значения функции и первой (второй) производной при переходе от одного куска к другому. В общем случае представление бикубического параметрического куска имеет вид (приведена формула для x-координаты, для других координат формула аналогична):
|
Аналогично случаю с параметрическими кубическими кривыми, наиболее применимыми являются:
· форма Безье,
· форма В-сплайнов,
· форма Эрмита.
Как уже отмечалось, можно выделить два основных типа представлений 3D моделей:
· граничное, когда в модели хранятся границы объекта, например,
вершины, ребра, грани,
· в виде дерева построения, когда хранятся базовые объекты
(призма, пирамида, цилиндр, конус и т.п.) из которых формировалось
тело и использованные при этом операции; в узле дерева сохраняется
операция формирования, а ветви представляют объекты.
Предельным случаем граничной модели является модель, использующая перечисление всех точек занимаемого ею пространства. В частности, тело может быть аппроксимировано набором "склеенных" друг с другом параллелепипедов, что может быть удобно для некоторых вычислений (веса, объемы, расчеты методом конечных элементов и т.д.).
Часто используются гибридные модели, в которых в различной мере смешиваются эти два основных типа представления. В частности, в граничной модели может сохраняться информация о способе построения, например, информация о контуре и траектории его перемещения для формирования заданной поверхности (это т.н. кинематические модели). В моделях в виде дерева построения в качестве элементарных могут использоваться не только базовые объекты, но также и сплошные тела, заданные с помощью границ.
В общем случае нельзя утверждать, что одна модель во всем лучше другой. Так, например, граничная модель удобна для выполнения операций визуализации (удаление невидимых частей, закраска и т.п.), с другой стороны модель в виде дерева построения естественным образом может обеспечить параметризацию объекта, т.е. модификацию объекта изменением тех или иных отдельных параметров, вплоть до убирания каких-либо составных частей, но не удобна для визуализации, так как требует перевычисления объекта по дереву построения. Поэтому необходимы средства взаимного преобразования моделей. Понятно, что из более общей можно сформировать более простую, обратное преобразование далеко не всегда возможно или целесообразно, что и иллюстрируется сплошными и штриховыми линиями на рис. 0.5.44.
Из рис. 0.5.44 видно особое место граничной модели, преобразование в которую возможно из любых других1. Учитывая это, а также и то, что эта модель наиболее удобна для визуализации дальнейшее рассмотрение будет, в основном, относиться к этой модели.
Используются две основных разновидности способов представления поверхностей тела:
· представление в виде набора вершин, ребер и плоских
многоугольников (полигональных сеток),
· представление с использованием параметрических бикубических
площадок (кусков).
Полигональные сетки используются как для представления плоских поверхностей, так и для аппроксимации криволинейных, в том числе и параметрических бикубических площадок, поэтому далее в основном подразумевается представление поверхности в виде плоских многоугольников.
Как отмечалось, полигональная сетка представляет собой набор вершин, ребер и плоских многоугольников. Вершины соединяются ребрами. Многоугольники рассматриваются либо как последовательность вершин или ребер. Можно предложить много способов внутреннего представления полигональных сеток.
На рис. 0.5.45 изображен простой пример полигональной сетки из четырех многоугольников с девятью вершинами и двенадцатью ребрами. На рис. 0.5.46-0.5.48 рассмотрены несколько различных представлений и приведены соображения по их эффективности и удобству манипулирования.
· объемная модель,
· полиэдральная модель,
· упрощенные модели,
· сосуществование моделей.
Процедурная модель и представление в данных.
Вещество и поле не есть что-то отдельное от эфира, также как и человеческое тело не есть что-то отдельное от атомов и молекул его составляющих. Оно и есть эти атомы и молекулы, собранные в определенном порядке. Также и вещество не есть что-то отдельное от элементарных частиц, а оно состоит из них как базовой материи. Также и элементарные частицы состоят из частиц эфира как базовой материи нижнего уровня. Таким образом, всё, что есть во вселенной - это есть эфир. Эфира 100%. Из него состоят элементарные частицы, а из них всё остальное. Подробнее читайте в FAQ по эфирной физике.