Содержание
- 2. Компьютерная графика – это к настоящему времени достаточно развитая и многосторонняя отрасль знания. Существует аппаратное и
- 3. История Первые вычислительные машины не имели отдельных средств для работы с графикой, однако уже использовались для
- 4. Математические основы компьютерной графики : Преобразования в двухмерном пространстве Преобразования в трехмерном пространстве Аффинное проецирование Перспективное
- 5. Преобразования в двухмерном пространстве Преобразования в двухмерном пространстве используются в разнообразных случаях: чтобы отдельные части объекта
- 6. Однородные координаты. Операции в них Любая система координат, в которой представление точки в двухмерном (трехмерном) пространстве
- 7. Операция масштабирования За счет коэффициентов a и d матрицы преобразования происходит увеличение (или уменьшение) значения координат
- 8. Поворот фигуры вокруг произвольной точки (m, n) на произвольный угол a Чтобы провести любое сложное преобразование,
- 9. Преобразования в трехмерном пространстве На прошлой лекции мы изучили операции, которые можно выполнять с точкой на
- 10. Поворот тела вокруг точки (m, n, k) на угол a Разобъем данную операцию на базовые (простейшие),
- 11. Аффинное проецирование Геометрия аффинная Аксонометрическая (прямоугольная) проекция Ортографическая проекция Ортогональная проекция Диметрическая проекция Изометрическая проекция Косоугольная
- 12. Аксонометрическая ортографическая проекция Смещает изображение по оси z на n единиц и проецирование происходит в плоскости
- 13. Перспективное проецирование На фотографиях, картинах, экране изображения кажутся нам естественными и правильными. Эти изображения называют перспективными.
- 14. уравнение x'/F = x/(F + zпр) равносильно: x' = xF/(F + zпр) = x/(1 + zпр/F)
- 15. В плоскости экрана после преобразования мы будем иметь следующее изображение: Обратите внимание: если бы центр тяжести
- 16. Стереографическая и специальные перспективные проекции Чтобы помочь человеку осознать, что на экране перед ним — именно
- 17. Специальная перспективная проекция на сферу («рыбий глаз») В отличие от классической перспективы, в перспективной проекции на
- 18. Масштабирование в окне Масштабирование Для того, чтобы выполнить масштабирование, необходимо: задать или определить координаты размера изображения:
- 19. Нахождение параметров плоскости Нахождение плоскости по точкам Пусть уравнение ax + by + cz + d
- 21. Скачать презентацию
Слайд 2Компьютерная графика – это к настоящему времени достаточно развитая и многосторонняя отрасль
Компьютерная графика – это к настоящему времени достаточно развитая и многосторонняя отрасль
Слайд 3История
Первые вычислительные машины не имели отдельных средств для работы с графикой, однако
История
Первые вычислительные машины не имели отдельных средств для работы с графикой, однако
В 1961 году программист С. Рассел возглавил проект по созданию первой компьютерной игры с графикой. Создание игры «Spacewar» («Космические войны») заняло около 200 человеко-часов. Игра была создана на машине PDP-1.
В 1963 году американский учёный Айвен Сазерленд создал программно-аппаратный комплекс Sketchpad, который позволял рисовать точки, линии и окружности на трубке цифровым пером. Поддерживались базовые действия с примитивами: перемещение, копирование и др. По сути, это был первый векторный редактор, реализованный на компьютере. Также программу можно назвать первым графическим интерфейсом, причём она являлась таковой ещё до появления самого термина.
В середине 1960-х гг. появились разработки в промышленных приложениях компьютерной графики. Так, под руководством Т. Мофетта и Н. Тейлора фирма Itek разработала цифровую электронную чертёжную машину. В 1964 году General Motors представила систему автоматизированного проектирования DAC-1, разработанную совместно с IBM.
В 1968 году группой под руководством Константинова Н.Н. была создана компьютерная математическая модель движения кошки. Машина БЭСМ-4, выполняя написанную программу решения дифференциальных уравнений, рисовала мультфильм «Кошечка», который для своего времени являлся прорывом. Для визуализации использовался алфавитно-цифровой принтер.
Фундаментом для формирования и редактирования изображений служат математические и алгоритмические основы компьютерной графики (в первую очередь, это относится к изображениям, закодированным в векторной форме). Изучению именно таких основ компьютерной графики, используемых при обработке графических данных для вывода изображения на растровое графовыводящее устройство, а также последующего его видоизменения.
Слайд 4Математические основы компьютерной графики :
Преобразования в двухмерном пространстве
Преобразования в трехмерном пространстве
Аффинное проецирование
Перспективное
Математические основы компьютерной графики :
Преобразования в двухмерном пространстве
Преобразования в трехмерном пространстве
Аффинное проецирование
Перспективное
Стереографическая и специальные перспективные проекции
Масштабирование в окне
Нахождение параметров плоскости
Слайд 5Преобразования в двухмерном пространстве
Преобразования в двухмерном пространстве используются в разнообразных случаях: чтобы
Преобразования в двухмерном пространстве
Преобразования в двухмерном пространстве используются в разнообразных случаях: чтобы
Преобразование точки
Точка на плоскости представляется двумя координатами: |x y|. Матрица преобразования точки выглядит так:
Ниже показано преобразование точки через квадратную матрицу; здесь xn = xa + yc и yn = xb + yd — новые координаты точки после преобразования:
Преобразование фигуры
Если представить фигуру как совокупность точек, то можно провести и ее преобразование. В следующем примере задано четыре точки: A(0, 0), B(1, 0), C(1, 1), D(0, 1), каждая из которых после преобразования переходит соответственно в A*(0, 0), B*(a, b), C*(a + c, b + d), D*(c, d):
Геометрически это соответствует деформации фигуры:
При этом площадь новой фигуры равна площади старой фигуры, умноженной на детерминант матрицы преобразования: S2 = S1 * |ad - bc|.
Слайд 6 Однородные координаты. Операции в них
Любая система координат, в которой представление точки
Однородные координаты. Операции в них
Любая система координат, в которой представление точки
Применение однородных координат в общем случае позволяет устранять аномалии, возникающие при работе в декартовых координатах, и представлять сложные преобразования в виде произведения нескольких матриц.
Геометрическая интерпретация на случай двухмерного пространства: введение третьей координаты, равной единице, можно трактовать как переход в трехмерное пространство, в котором разрешено работать только в плоскости z = 1. Следует представлять себе, что экран компьютера (картинная плоскость, плоскость изображения) находится в плоскости z = 1:
В случае выхода рисунка за сечение z = 1 рисунок возвращается принудительно в данное сечение — для того, чтобы были возможны последующие операции:
Такая операция называется нормализацией однородных координат:
Общий вид преобразования
Операция смещения
Матрица преобразования содержит в себе константы m и n, под действием которых точка смещается на m единиц вдоль оси x и на n единиц — вдоль оси y:
Слайд 7Операция масштабирования
За счет коэффициентов a и d матрицы преобразования происходит
увеличение (или
Операция масштабирования
За счет коэффициентов a и d матрицы преобразования происходит
увеличение (или
d раз по осям x и y соответственно:
Общее полное масштабирование
В данном случае при s < 1 будет происходить увеличение значения координат точки (x, y) в s раз; при s > 1 мы получим обратный эффект — уменьшение значения координат (x, y) в s раз.
Поворот на угол q
Здесь q — угол, на который требуется повернуть точку (x, y). Обратите внимание: поворот происходит относительно точки (0, 0) декартовой системы координат против часовой стрелки!
Отображение или зеркалирование
Зеркалирование относительно прямой y = x (рис. 1.6a):
Зеркалирование относительно прямой x = 0 (рис. 1.6b):
Зеркалирование относительно прямой y = 0 (рис. 1.6c):
Зеркалирование относительно начала координат (рис. 1.6d):
Слайд 8Поворот фигуры вокруг произвольной точки (m, n) на произвольный угол a
Чтобы провести
Поворот фигуры вокруг произвольной точки (m, n) на произвольный угол a
Чтобы провести
Пусть мы хотим повернуть треугольник с координатами A(x, y), B(x1, y1), C(x2, y2) вокруг точки D(m, n) на угол a. Пусть P-s — матрица переноса точки на вектор A(-m, -n), Va — матрица поворота на угол a, Ps — матрица переноса точки на вектор A'(m, n).
Итак, мы имеем все данные, необходимые для проведения сложного преобразования первой точки A(x, y):
Точно такие же преобразования необходимо провести для оставшихся двух точек треугольника, подставляя соответствующие их координаты взамен x и y (последовательность операций см. на рис. 1.7). Таким образом, сложная операция разбивается на простейшие и задается произведением соответствующих матриц преобразования, причем порядок, в котором перемножаются матрицы, существенно определяет результат.
Центральное проецирование (перспектива)
px + qy + 1 = H — плоскость.
Слайд 9Преобразования в трехмерном пространстве
На прошлой лекции мы изучили операции, которые можно выполнять
Преобразования в трехмерном пространстве
На прошлой лекции мы изучили операции, которые можно выполнять
Операция смещения
Операция масштабирования
Общее полное масштабирование
Матрицы поворота вокруг осей x, y, z на угол a
Rx Ry Rz
Слайд 10Поворот тела вокруг точки (m, n, k) на угол a
Разобъем данную операцию
Поворот тела вокруг точки (m, n, k) на угол a
Разобъем данную операцию
Зеркалирование
Замечание: ниже представлены всего лишь три матрицы зеркалирования, на самом деле их больше. Предлагаем читателю самостоятельно построить недостающие матрицы.
Зеркалирование относительно оси z:
Зеркалирование относительно плоскости x = 0:
Зеркалирование относительно начала координат:
Вращение тела на угол q вокруг произвольной оси, проходящей через точку (0, 0, 0)
Здесь a — угол наклона относительно оси x, b — угол наклона относительно оси y, g — угол наклона относительно оси z.
Слайд 11Аффинное проецирование
Геометрия аффинная
Аксонометрическая (прямоугольная) проекция
Ортографическая проекция
Ортогональная проекция
Диметрическая проекция
Изометрическая проекция
Косоугольная проекция
Проекция Кабине
Проекция Кавалье
Геометрия
Аффинное проецирование
Геометрия аффинная
Аксонометрическая (прямоугольная) проекция
Ортографическая проекция
Ортогональная проекция
Диметрическая проекция
Изометрическая проекция
Косоугольная проекция
Проекция Кабине
Проекция Кавалье
Геометрия
Перспективная проекция
Одноточечная проекция
Двухточечная проекция
Трехточечная проекция
Аффинная геометрия является чертежным средством; в этой геометрии используется параллельное проецирование, которое осуществляется пучком параллельных прямых (см. рис. 3.1, слева). Детерминант матрицы преобразований в аффинной геометрии равен нулю. Геометрия перспективная является художественным средством, в ней отсутствуют параллельные линии и используется центральное проецирование, при котором все линии сходятся у горизонта в одну точку (см. рис. 3.1, справа); за счет того, что одна, две или три компоненты четвертого столбца матрицы преобразований не равны нулю, ее детерминант также не равен нулю.
Наиболее распространены аффинные двухмерные и трехмерные преобразования. Их основные геометрические свойства: прямые линии после преобразования остаются прямыми, параллельные — параллельными, плоскости остаются плоскостями и параллельные плоскости — параллельными. Вычерчивание трехмерных объектов, независимо от того на бумаге ли это происходит или на экране дисплея, осуществляется при помощи двухмерных проекций. В плоской проекции каждая точка предмета проецируется определенным образом на плоскость проекции, и ее образ называется точкой проекции. Если линии проекции, соединяющие точки предмета с соответствующими точками проекции, параллельны, то мы имеем плоскую параллельную проекцию. Если же линии проекции сходятся в одной общей точке, то получаемое изображение называется центральной проекцией, или перспективным изображением предмета.
Рассмотрим далее несколько видов аксонометрических проекций. Заметим, что среди них выделяются прямоугольные (ортогональные) проекции — те, у которых проецирующие лучи перпендикулярны к плоскости изображения. Слова «аксонометрическая» и «прямоугольная» часто используют как синонимы.
Слайд 12Аксонометрическая ортографическая проекция
Смещает изображение по оси z на n единиц и проецирование
Аксонометрическая ортографическая проекция
Смещает изображение по оси z на n единиц и проецирование
происходит в плоскости z = 0:
Аксонометрическая ортогональнальная проекция
Проецирующие лучи перпендикулярны к плоскости изображения, и плоскость проекции совпадает с одной из координатных плоскостей.
Пример: выполним поворот куба (рис. 3.2, слева) относительно оси x на угол 90o и спроецируем его на плоскость z = 0 (рис. 3.2, справа). Обратите внимание, что точки, которые после поворота на куба на 90o будут лежать на проецирующих лучах (пары A и C, B и D и т. д.), после преобразования займут одинаковое положение (пары Aн и Cн, Bн и Dн и т. д.):
Запись в матричной форме:
Аксонометрическая диметрическая проекция
В этом случае были специально подобраны коэффициенты,
дающие минимальные искажения какого-либо изображения:
Аксонометрическая изометрическая проекция
В общем смысле дает проекцию с изменением масштаба:
Надо заметить, что любая проекция имеет свои достоинства и недостатки (искажение размеров изображения по одной из осей, неодинаковость сокращения размеров по разным осям, заслонения точек друг другом), поэтому каждая из них используется там, где это более удобно: ортографическая — только для переноса и проецирования, ортогональная — для вращения и проецирования; при диметрической проекции изображение по оси y имеет натуральный размер, а по осям x и z оно одинаково сокращено (то есть на экране размер линии по x и по y уменьшен в А раз по отношению к натуральному размеру на объекте); при изометрической проекции изображение по трем осям одинаково сокращено.
Слайд 13Перспективное проецирование
На фотографиях, картинах, экране изображения кажутся нам естественными и правильными. Эти
Перспективное проецирование
На фотографиях, картинах, экране изображения кажутся нам естественными и правильными. Эти
Обычная перспективная проекция — это центральная проекция на плоскость прямыми лучами, проходящими через точку — центр проецирования. Один из проецирующих лучей перпендикулярен к плоскости проецирования и называется главным. Точка пересечения этого луча и плоскости проекции — главная точка картины.
Существует три системы координат. Обычно программист работает и держит данные о геометрических объектах в мировых координатах. Для повышения реалистичности при подготовке к выводу изображения на экран данные об объектах из мировых координат переводят в видовые координаты. И только в момент вывода изображения непосредственно на экран дисплея переходят к экранным координатам, которые представляют собой номера пикселов экрана.
Первые две системы могут использоваться в многомерных системах координат, но последняя только в двухмерной. Операции являются необратимыми, то есть из двухмерной картинки-проекции невозможно восстановить трехмерное изображение.
Матрица общего перспективного преобразования
В этой матрице элементы a, d, е отвечают за масштабирование, m, n, L — за смещение, p, q, r — за проецирование, s — за комплексное масштабирование, х — за вращение.
Одноточечное проецирование на плоскость z = 0
Суть этого проецирования такова: чем глубже находится предмет, тем больше становится значение z-координаты и знаменателя rz + 1, и, следовательно, тем мельче выглядит предмет на плоскости проекции. Выполним несложные выкладки и поясним их графически:
Слайд 14уравнение x'/F = x/(F + zпр) равносильно: x' = xF/(F + zпр) = x/(1 + zпр/F) = x/(1 + rzпр), где r = 1/F, F — фокус.
Для того, чтобы точки, лежащие
уравнение x'/F = x/(F + zпр) равносильно: x' = xF/(F + zпр) = x/(1 + zпр/F) = x/(1 + rzпр), где r = 1/F, F — фокус.
Для того, чтобы точки, лежащие
А теперь для примера отобразим куб, стороны которого равны
единице (см. рис. 4.3), на плоскость z = 0; пусть на оси z фокус F = -10 и,
следовательно, r = -1/10 = -0.1:
Слайд 15В плоскости экрана после преобразования мы будем иметь следующее изображение:
Обратите внимание: если
В плоскости экрана после преобразования мы будем иметь следующее изображение:
Обратите внимание: если
находился в точке (0, 0, 0), куб выглядел бы более
«традиционно»:
Двухточечное проецирование
Если проекция двухточечная (например, по p <> 0 и q <> 0), то имеются две точки схода на соответствующие оси. Обратите внимание: так как по z в данном случае реализуется параллельное проецирование, то удвоения контура куба на экране (x, y) нет. Меняя p и q, мы регулируем точку схода:
Трехточечное проецирование по p, q, r
В данном случае p <> 0, q <> 0, r <> 0, и проекция будет иметь следующий вид:
Слайд 16Стереографическая и специальные перспективные проекции
Чтобы помочь человеку осознать, что на экране перед
Стереографическая и специальные перспективные проекции
Чтобы помочь человеку осознать, что на экране перед
Разберемся, каким же образом мы определяем объем, глубину в изображении? Для этого надо понять, как и с помощью чего мы «чувствуем» третье измерение? Оказывается, человек чувствует глубину по напряжению аккомодационной мышцы глаза. Чем ближе к глазу находится объект, тем сильнее напрягается эта мышца и тем сильнее она выгибает глазной хрусталик. Таким образом, очень сильное напряжение аккомодационной мышцы сообщает мозгу о том, что предмет находится очень близко.
Так как глаза человека находятся на некотором расстоянии друг от друга, один и тот же предмет они видят немного по-разному. На рис. 5.1 точка x1 — это изображение предмета на плоскости проекции для правого глаза, x2 — для левого, F — расстояние от глаз до плоскости проекции (около 50 см.), d — расстояние между глазами (около 5 см.), a = arctg(d/F) — стереоугол (около 5.71o):
Таким образом, чтобы создать для глаз эффект стерео,
необходимо сформировать два изображения —
для левого и правого глаза. Ниже даны
соответствующие матрицы:
левый глаз правый глаз
Обратим внимание на некоторые элементы матриц. Значение -1/F говорит о том, что проецирование идет по оси z; третий столбец матриц состоит из одних нулей — это указывает на то, что проецирование идет на плоскость z = 0; F/20 = d/2 и -F/20 = -d/2 задают смещение по оси x для левого и правого глаза соответственно.
Существуют различные способы рассматривания полученных изображений. Первый способ применяется в виртуальных шлемах: изображение с помощью крохотных жидкокристаллических дисплеев подается отдельно на каждый глаз. Другой способ — анаглифический. В этом случае картинка для левого глаза окрашивается в синий цвет, а для правого — в красный; зритель надевает специальные фильтры-очки с синими и красными стеклами — и одним глазом видит только первое изображение, а другим — только второе. Мозг наблюдающего воспримет такую картину как единое объемное стереоизображение.
Слайд 17Специальная перспективная проекция на сферу («рыбий глаз»)
В отличие от классической перспективы, в
Специальная перспективная проекция на сферу («рыбий глаз»)
В отличие от классической перспективы, в
za = zпр * F C = 2F/[za + sqrt(x2пр + y2пр + z2a)] x' = xпр * C y' = yпр * C
Взгляните на рис. 5.2. Луч, выходящий из точки М, есть луч проецирования на сферу в точке P. Точка S является центром проекции. Луч, выходящий из точки S' и проходящий через P и М', — это луч перепроецирования со сферы на плоскость.
Специальная перспективная проекция на цилиндрическую поверхность
Проекция на цилиндрическую поверхность позволяет показывать объекты с очень большими углами зрения по горизонтали, вплоть до круговой панорамы. Вычерчиваются проекции в виде разверток на обычных графических устройствах.
z'пр = zпр + F y'/y = (F + zпр)/F, y = y'F/(F + zпр) = y'F/z'пр x' = F * arctg(xпр/za) y' = F * y/sqrt(x2пр + z2пр)
На рис 5.3 S — центр проекции (точка зрения), z — главная ось.
Слайд 18Масштабирование в окне
Масштабирование
Для того, чтобы выполнить масштабирование, необходимо:
задать или определить координаты
Масштабирование в окне
Масштабирование
Для того, чтобы выполнить масштабирование, необходимо:
задать или определить координаты
вычислить коэффициенты масштабирования: fx = (Xmax - Xmin) / (xmax - xmin), fy = (Ymax - Ymin) / (ymax - ymin), fx = fy = min(fx, fy)
произвести вычисление текущих координат экрана: xэ = Xmin + fx * (xр - xmin), yэ = Ymin + fy * (yр - ymin), где xэ, yэ — экранные координаты, xр, yр — реальные координаты.
Слайд 19Нахождение параметров плоскости
Нахождение плоскости по точкам
Пусть уравнение ax + by + cz
Нахождение параметров плоскости
Нахождение плоскости по точкам
Пусть уравнение ax + by + cz
x1a + y1b + z1c = -1
x2a + y2b + z2c = -1
x3a + y3b + z3c = -1
Решив эту систему уравнений относительно неизвестных a, b и c, мы найдем уравнение плоскости. Покажем это на примере. Найдем уравнение плоскости, проходящей через три точки: A(1, 0, 0), B(0, 1, 0), C(1, -1, 1). Рис. 7.1 иллюстрирует нашу задачу:
Представим систему уравнений в виде произведения матриц: первая из них содержит координаты точек A, B и C, вторая — неизвестные a, b и c, третья — правые части уравнений:
Отсюда находим a = -1, b = -1, c = -1 и подставляем их в уравнение плоскости: -1x - 1y - 1z + d = 0 или x + y + z = d. Подставим в это уравнение плоскости любую точку, например, (1, 0, 0) и найдем d: d = 1. Окончательно уравнение данной плоскости выглядит так: x + y + z - 1 = 0.
Представим систему уравнений в виде произведения матриц: первая из них содержит координаты точек A, B и C, вторая — неизвестные a, b и c, третья — правые части уравнений:
Отсюда находим a = -1, b = -1, c = -1 и подставляем их в уравнение
плоскости: -1x - 1y - 1z + d = 0 или x + y + z = d. Подставим в это
уравнение плоскости любую точку, например, (1, 0, 0) и найдем d: d = 1. Окончательно уравнение данной плоскости выглядит так: x + y + z - 1 = 0.