Курсовой проект 106 страниц, 42 рисунка, 2 таблицы, 18 фомул, 15 матриц, 4 приложения
Скачать 5.65 Mb.
|
Рисунок 3.5 – Преобразование отражения относительно плоскости XOY3.2.5 Преобразования сдвига На рис. 3.6 приведен пример сдвига вдоль оси ОХ. Рисунок 3.6 – Двумерный сдвиг относительно оси OХ В этом случае координата у каждой точки остается неизменной, а каждая координата х перемещается на величину, которая линейно возрастает с ростом у. Трехмерный сдвиг описывается следующей матрицей: (3.9) Здесь Shx, Shy, Shz – параметры сдвига вдоль осей OX, OY, OZ соответственно. 3.3 Проецирование. Виды проецирования Несоответствие между пространственными объектами и плоскими изображениями устраняется путем введения проекций, которые отображают объекты на картинной двумерной проекционной плоскости. Проецированием называется процесс получения изображения объекта на проецирующей (картинной) плоскости путем помещения всех точек объекта на эту плоскость. Для получения нормального изображения необходимо, чтобы над каждой точкой объекта выполнялось одинаковое преобразование. В общем случае различают два типа проецирования: параллельное и центральное (см. рис. 3.7). Каждый из этих двух типов имеет свои подтипы. Рисунок 3.7 – Параллельное (слева) и центральное проецирование 3.3.1 Параллельное ортографическое проецирование Параллельное проецирование на картинную плоскость проводится пучком параллельных прямых, проходящих под определённым углом к картинной плоскости. В случае ортографического проецирования в качестве картинной плоскости выступает одна из координатных плоскостей, а пучок параллельных прямых перпендикулярен ей. Математически параллельное ортографическое проецирование выражается в обнулении координаты точки, соответствующей оси, перпендикулярной проецирующей плоскости. Матрица ортографического проецирования получается из единичной матрицы путем обнуления соответствующего диагонального элемента. Так, матрицы проецирования на плоскости ХOY , YOZ , ХOZ будут следующими: (3.10) (3.11) (3.12) Рисунок 3.8 – Параллельное проецирование 3.3.2 Параллельное косоугольное проецирование Косоугольная проекция формируется параллельными проекторами с центром, лежащим в бесконечности, и расположенными под косым углом к плоскости проекции. Общая схема проекции изображена на рисунке 3.9. Рисунок 3.9 – Параллельное косоугольное проецирование Особый интерес представляет косоугольные проекции кавалье (свободная). Проекция кавалье получается, когда угол между проекторами и плоскостью проекции составляет 45°. В этой проекции коэффициенты искажения для всех трех главных направлений одинаковы. Результат этой проекции выглядит неестественно утолщенным. Матрица проекции кабине на плоскость XOY имеет следующий вид: (3.13) Здесь ƒ — длина спроецированного единичного вектора на оси z, т.е. коэффициент искажения, а α — угол между горизонталью и спроецированной осью z. На рисунке 3.10 изображена свободная проекция куба. Рисунок 3.10 – свободная проекция куба 3.3.2 Изометрическое проецирование Изометрия является разновидностью аксонометрического проецирования. Изометрией называется такое параллельное проецирование, при котором вектор нормали картинной плоскости (плоскости проецирования) попарно образуют одинаковые углы с ортами координатных осей (рисунок 3.11). Рисунок 3.11 – Пример изометрического проецирования Плоскость проецирования пересекает координатные оси в точках dx, dy, dz и задается нормальным вектором N (перпендикулярен плоскости проецирования). Путем параллельного проецирования точка А проецируется в точку А' на плоскость (dx, dy, dz). По определению изометрического проецирования, вектор N должен образовывать попарно равные углы с ортами координатных осей. Это возможно лишь в случае, когда угол наклона равен 45. Координаты ортонормированного вектора N(Nx, Ny, Nz) вычисляются следующим образом: . (3.2) 3.3.3 Диметрическая проекция Диметрическая проекция - это аксонометрическая проекция, у которой коэффициенты искажения по двум осям имеют равные значения, а искажение по третьей оси может принимать иное значение. В целях упрощения построений, как и в изометрических проекциях, приведенный коэффициент искажения по осям x и z принимают равным 1; по оси y коэффициент искажения равен 0,5. По осям x и z или параллельно им все размеры откладывают в натуральную величину, по оси y размеры уменьшают вдвое. Расположение осей Ox и Oy в диметрической проекции показано на рис. 3.12. Рисунок 3.12 - Расположение осей Ox и Oy в диметрической проекции показано Коэффициент искажения по оси y равен 0.47, а по осям x и z - 0.94. Диметрическую проекцию, как правило, без искажения по осям x и z и с коэффициентом искажения 0.5 по оси y. Окружности, лежащие в плоскостях, параллельных плоскостям проекций, проецируются на аксонометрическую плоскость проекций в эллипсы. Если димметрическую проекцию выполняют без искажения по осям x и z то большая ось эллипсов 1, 2, 3 равна 1,06 диаметра окружности, а малая ось эллипса 1 - 0.95, эллипсов 2 и 3 - 0.35 диаметра окружности. Если диметрическую проекцию выполняют с искажения по осям x и z, то большая ось эллипсов 1, 2, 3 равна диаметру окружности, а малая ось эллипса 1 - 0.9, эллипсов 2 и 3 - 0,33 диаметра окружности. 3.4 Модели представления объектов Существует два основных способа представления трехмерных объектов на экране. Первая из моделей - каркасная (проволочная) отображает основные линии, составляющие объект. Проволочная модель реализуется достаточно просто: она задается множеством точек (вершин) объекта и множеством ребер. Каждое ребро представляет собой объединение двух вершин, содержащихся в множестве. Таким образом, при отрисовке на экране виден каркас объекта. Второй вид модели применяется гораздо чаще, она является более практичной, суть ее заключается в задании треугольных граней объекта. Каждая грань определяется как треугольник. Такая модель называется полигональной. Полигональная модель удобна тем, что позволяет применить множество алгоритмов закраски, сортировки, отсечения невидимых граней. 3.5 Управление камерой 3.5.1. Мировая и локальная системы координат Мировая система координат – общая система координат, заданная началом координат и тремя ортонормированными векторами. Локальная система координат (система координат связанная с самим объектом) вводит свою точку отсчета и направление координатных осей. В мировой системе координат можно описать бесконечное множество локальных систем координат (например, для каждого объекта). 3.5.2 Модель камеры Совокупность объектов мировой системы координат определяют сцену. К объектам сцены относятся как трехмерные объекты, так и камеры, задающие видовые операции. Камера управляет проецированием. Каждая камера задается следующими параметрами: - положение в мировой системе координат; - направление камеры (главная оптическая ось); - угол зрения камеры; - угол поворота относительно главной оптической оси. Камера показана на рисунке 3.10. Рисунок 3.10 – Камера Величина Ө - угол зрения камеры, N — это расстояние от глаза до ближней плоскости, a F — расстояние от глаза до дальней плоскости. N и F должны быть положительными.
Камера представляет собой обычный объект, заданный в локальной системе координат и определяет перспективные или параллельные проекции. Точка проецирования называется фокусом. В локальной системе координат эта точка находится на главной оптической оси. Типичные операции управления камерой: а) зуммирование – изменение угла зрения или расстояния до центральной точки. При зуммировании камера остается на месте. Матрица зуммирования может быть получена путем умножения матриц двух последовательных преобразований: перспективного преобразования и проецирования на плоскость OXZ; б) панорамирование – камера поворачивается влево вправо. Матрица панорамирования совпадает с матрицей поворота вокруг оси OZ; в) вертикальное панорамирование – поворот вверх-вниз. Матрица вертикального панорамирования совпадает с матрицей поворота вокруг оси OX; г) вращение камеры вокруг главной оптической оси. Матрица вращения вокруг главной оптической оси совпадает с матрицей поворота вокруг оси ординат OY’ локальной системы координат. Поворот аналогичен повороту вокруг оси ординат OZ; д) перенос влево-вправо и вверх-вниз относительно главной оптической оси. е) наезд и откат камеры – перемещение камеры вдоль главной оптической оси. В этом случае изменяется положение камеры в мировой системе координат; 3.6 Методы удаления невидимых граней При использовании полигональной модели возникает проблема отрисовки невидимых граней. Проблема заключается в порядке вывода на экран граней объекта. Для решения данной задачи используется несколько подходов. 3.6.1 Алгоритм z-буфера Одним из самых простых алгоритмов удаления невидимых граней и поверхностей является метод z-буфера (буфера глубины), где для каждого пикселя находится грань, ближайшая к нему вдоль направления проектирования. Для вывода на картинную плоскость произвольной грани она переводится в растровое представление на картинной плоскости и затем для каждого пикселя этой грани находится его глубина. В случае если эта глубина меньше значения глубины, хранящегося в z-буфере, пиксель рисуется и его глубина заносится в z-буфер. Грань рисуется последовательно строка за строкой; для нахождения значений используется линейная интерполяция. Фактически метод z-буфера осуществляет поразрядную сортировку по x и y, а затем сортировку по z, требуя всего одного сравнения для каждого пикселя каждой грани. Метод z-буфера работает исключительно в пространстве картинной плоскости и не требует никакой предварительной обработки данных. Порядок, в котором грани выводятся на экран, не играет никакой роли. 3.6.2 Алгоритм художника Пусть имеется некий набор граней (т.е. объект), который требуется нарисовать. Отсортируем грани по удаленности от камеры и отрисуем все грани, начиная с самых удаленных. Довольно распространенная характеристика удаленности для грани ABC - это среднее значение z, mid_z = (A.z+B.z+C.z)/3. Таким образом, суть алгоритма достаточно проста. Однако существует несколько проблем – в некоторых случаях алгоритм вообще не может дать правильного результата, - в каком порядке грани не рисуй, получится неправильно. 3.7 Закраска граней Основным преимуществом полигональных моделей является возможность закраски каждой из граней объекта в соответствии с её освещенностью. Интенсивность освещенности произвольной точки пространства вычисляется по формуле: , (3.3) где Ip - интенсивность освещенности в точке, Ка- коэффициент отражения; Kd- коэффициент рассеивания; I- интенсивность источника света; n- единичная нормаль к грани, содержащей точку; l- единичный вектор от точки к источнику света. Каждый подход предусматривает определённый уровень реалистичности изображения. С повышением реалистичности изображения скорость алгоритма падает. Ниже будет рассмотрен один метод затенения объектов: плоское затенение. Это простейший способ затенения. Для произвольной точки грани вычисляется интенсивность по формуле (3.3) и считается, что для всех точек грани интенсивность одинакова. В качестве точки для вычисления интенсивности не желательно брать граничные точки грани. Изображение носит явный полигональный характер. 4 ОПИСАНИЕ ГЕОМЕТРИЧЕСКИХ МОДЕЛЕЙ ОБЪЕКТОВ 4.1 Геометрическая модель куба Куб задаётся единственным параметром w –длина ребра и состоит из восьми вершин: A11, A12, A13, A14 – вершины нижнего основания и A21, A22, A23, A24 – вершины верхнего основания. Пусть начало локальной системы координат куба совпадает с его геометрическим центром. Тогда координаты его вершин будут вычисляться следующим образом: A11=(-w/2, -w/2, -w/2); A12=(-w/2, -w/2, w/2); A13=(w/2, -w/2, w/2); A14=(w/2, -w/2, -w/2); A21=(-w/2, w/2, -w/2); A22=(-w/2, w/2, w/2); A23=(w/2, w/2, w/2); A24=(w/2, w/2, -w/2); Геометрическая модель куба представлена на рисунке 4.1. Рисунок 4.1 – Геометрическая модель куба 4.2 Геометрическая модель сферы В графической базе данных сфера представляется тройкой вида (r, m, n), где r – радиус сферы, m – количество разбиений на вертикальной полуокружности при построении 0-го меридиана (тот на котором расположены точки на рисунке), n – количество разбиений на горизонтальной окружности при построении каждой из параллелей. Центр локальной системы координат связывается с геометрическим центром сферы. Изображение сферы приведено на рисунке 4.2. Рисунок 4.2 - Геометрическая модель сферы Для построения сферы необходимо проделать следующие шаги. 1. Построить точку с координатами (0, 0, r) в локальной системе координат сферы. 2. Построить 0-вой меридиан. Каждая i-я точка 0-го меридиана получается из предыдущей методом вращения вокруг оси Х. Угол поворота точки при построении 0-го меридиана определяется как π/m. Координата следующей точки определяется по формуле: Pi=Pi-1*ПоворотOX(π/m). (4.1) Параллели получаются вращением 0-го меридиана вокруг оси OZ на угол 2π/n. Каждый следующий меридиан получается из предыдущего по формуле: Mi=Mi-1*ПоворотOZ(π/n). (4.2) 4.3 Геометрическая модель полусферы Для построения геометрической модели полусферы, необходимо учесть 3 параметра: количество разбиений по ширине (m), количество разбиений по высоте (n) и радиус сферы (r). Пусть основание полусферы лежит в плоскости XOZ, а часть полусферы без основания – со стороны положительного направления оси OY. Для аппроксимации полусферы, необходимо построить n ломаных, состоящих из m точек. Первая точка первой ломаной имеет координаты a11(0, r, 0), координаты остальных m-1 точек будем находить по формуле: Aij+1=Aij*ПоворотOZ(-180/(m-1)). (4.3) Координаты точек i-ой ломаной будем вычислять по формуле: Ai+1j=Aij*ПоворотOY(-180/(n-1)). (4.4) Геометрическая модель полусферы приведена на рисунке 4.3. Рисунок 4.3 – Геометрическая модель полусферы 4.4 Геометрическая модель треугольной косоугольной призмы Данный объект задаётся тремя параметрами: высота, радиус окружности, в которую вписано основание, смещение верхнего основания относительно нижнего вдоль оси OX. Обозначим эти параметры соответственно буквами h, r и s. Пусть центр нижнего основания совпадает с началом локальной системы координат, а часть призмы без основания находится со стороны положительного направления оси OZ. Первая точка нижнего основания имеет координаты A11=(0, r, 0). Тогда координаты остальных точек нижнего снования будем находить по следующей формуле: A1i+1= A1i*ПоворотOZ(360/3), (4.5) а координаты точек нижнего основания – по формуле: A2i+1= A2i*ПоворотOZ(360/3)*Перемещение(s, 0, h). (4.6) Вид геометрической модели треугольной косоугольной призмы приведен на рисунке 4.4. Рисунок 4.4 – Геометрическая модель треугольной косоугольной призмы 4.5 Геометрическая модель призмы с треугольным основанием Данный объект задаётся двумя параметрами: высота и радиус окружности, в которую вписано основание. Обозначим эти параметры соответственно буквами h и r. Пусть центр нижнего основания совпадает с началом локальной системы координат, а часть призмы без основания находится со стороны положительного направления оси OZ. Первая точка нижнего основания имеет координаты A11=(0, r, 0). Тогда координаты остальных точек нижнего снования будем находить по следующей формуле: A1i+1= A1i*ПоворотOZ(360/3), (4.7) а координаты точек верхнего основания – по формуле: A2i+1= A2i*ПоворотOZ(360/3)*Перемещение(0, 0, h). (4.8) Вид геометрической модели призмы с треугольным основанием приведен на рисунке 4.5. Рисунок 4.5 – Геометрическая модель призмы с треугольным основанием |