Векторная графика

+6

No comments posted yet

Comments

Slide 109

Глаз. Некоторая точка пространства, определяющая местоположение камеры Отображаемый объем – часть четырехугольной пирамиды, вершина которой совпадает с глазом. Раствор этой пирамиды определяет угол зрения камеры. Ближняя и дальняя плоскости камеры имеют определенное форматное соотношение (aspect ratio) Точки, лежащие внутри отображаемого объема проецируются на плоскость просмотра

Slide 110

Точки внутри видового объема проецируются на плоскость просмотра Полученное изображение преобразуется в порт просмотра (систему координат, связанную с устройством графического вывода)

Slide 1

Векторная графика

Slide 2

Компьютерная графика работает с объектами, заданными в трехмерном мире 2D – всего лишь частный случай Все эти объекты имеют форму, положение и ориентацию в виртуальном пространстве

Slide 3

Задачи визуализации трехмерных объектов Описание объектов, источников света, виртуальных камер, сред (жидкости, газы, туман) Взаимодействие этих объектов со светом и вычисление значений соответствующих пикселей Эта задача, в общем случае, непростая

Slide 5

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

Slide 6

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

Slide 7

Двухмерная прямоугольная система координат

Slide 8

Трехмерная прямоугольная система координат

Slide 9

Правосторонняя система координат Часто применяется при моделировании объектов

Slide 10

Левосторонняя система координат Часто применяется при работе с системами просмотра и виртуальными «камерами»

Slide 11

Обзор векторов

Slide 12

Вектор Вектор – это направленный отрезок Объект, имеющий длину и направление В физике, с помощью векторов представляются различные физические категории – скорость, сила, перемещение Вектор задает перемещение от одной точки к другой

Slide 13

Точки и векторы P Q v x y Вектор – разность между двумя точками: v = Q – P Разность точки и точки есть вектор Точка Q получена путем перемещения точки P на вектор v Q = P + v Сумма точки и вектора есть точка Точка имеет положение в пространстве Вектор имеет размер и направление

Slide 14

Запись векторов n-мерный вектор задается посредством его n-кортежа – списка его компонентов или

Slide 15

Операции с векторами Над векторами можно проделывать две основные операции Сложение векторов c = a + b Умножение на скаляр c = sa Данные операции выполняются покомпонентно

Slide 16

Сложение векторов a b a+b a b a+b

Slide 17

Масштабирование векторов a -a 1,5a

Slide 18

Линейная комбинация векторов Линейной комбинацией m векторов v1, v2, … vm называется вектор вида w=a1v1 + a2v2 + … + amvm a1, a2,…,am – скаляры

Slide 19

Аффинная комбинация векторов (affine combination) Линейная комбинация векторов называется аффинной комбинацией, если сумма коэффициентов a1, a2,…,am равна 1 Аффинные комбинации векторов появляются в различных контекстах, как и аффинные преобразования точек

Slide 20

Выпуклая комбинация векторов (convex combination) Выпуклая комбинация векторов – аффинная комбинация векторов, каждый коэффициент которой является неотрицательным Все ai должны находиться между 0 и 1. Почему?

Slide 21

Множество всех выпуклых комбинаций Для двух векторов v1 и v2 множество всех выпуклых комбинаций представляет собой множество всех векторов вида: v=(1-a)v1 + av2 a может изменяться от 0 до 1. (Почему?) v=v1 + a(v1 - v2)

Slide 22

Пример v1 v2 v a(v1 - v2) Выпуклой комбинацией векторов v1 и v2 является множество всех векторов v, удовлетворяющих условию: v=(1-a)v1 + av2

Slide 23

Модуль (длина, величина) вектора Модулем или длиной вектора w называется расстояние от его начала до конца Для n-мерного вектора w, представленного n-кортежем (w1, w2,…,wn) длина вычисляется по теореме Пифагора:

Slide 24

Единичный вектор (орт), нормирование Единичный вектор – это вектор, имеющий единичную длину Нормирование – масштабирование ненулевого вектора a так, чтобы получить в результате единичный вектор â, с тем же направлением, что и вектор a

Slide 25

Скалярное произведение векторов (dot product) Скалярное произведение двух n-мерных векторов v=(v1, v2,…,vn) и w=(w1, w2,…,wn) обозначается v ∙ w и имеет величину:

Slide 26

Свойства скалярного произведения Симметрия (коммутативность) a ∙ b = b ∙ a Линейность (дистрибутивность) (a + c) ∙ b = a ∙ b + c ∙ b Однородность (ассоциативность) (sa) ∙ b = s (a ∙ b) |b|2 = b ∙ b

Slide 27

Угол между двумя векторами b c φb φc θ

Slide 28

Угол между двумя векторами Косинус угла между двумя векторами равен скалярному произведению их орт

Slide 29

Знак скалярного произведения Связь между знаком косинуса и углом: cos(θ) > 0, если |θ| < 90° cos(θ) = 0, если |θ| = 90° cos(θ) < 0, если |θ| > 90° Угол между двумя векторами ненулевой длины составляет: Менее 90°, если b ∙ c > 0 Ровно 90°, если b ∙ c = 0 Более 90°, если b ∙ c < 0

Slide 30

Перпендикулярность (ортогональность) Два ненулевых вектора являются перпендикулярными (т.е. угол между ними равен 90°), если их скалярное произведение равно нулю

Slide 31

Двумерный «перп» вектор Пусть a = (ax, ay), тогда a┴ = (-ay, ax) – вектор, перпендикулярный против часовой стрелки к вектору a Для обозначения таких векторов используется символ «┴» («perp», произносится «перп»)

Slide 32

Пример a a┴ -a┴

Slide 33

Перп-скалярное произведение Перп-скалярное произведение – произведение перпа некоторого вектора на другой вектор a┴ ∙ b Свойства (доказать, используя определение a┴): a┴ ∙ b = axby – aybx a┴ ∙ a = 0 |a┴|2 = |a|2 a┴ ∙ b = -b┴ ∙ a

Slide 34

Ортогональные проекции и расстояние от точки до прямой В графических приложениях часто возникают 3 геометрических задачи Проецирование вектора на данный вектор Разложение вектора на составляющие в заданных направлениях Определение расстояния между точкой и прямой Использование перп-вектора и перп-скалярного произведения упрощает решение данных задач

Slide 35

Пример A C v c L Даны 2 точки A и C а также вектор v На каком расстоянии находится точка C от прямой L, проходящей через точку A в направлении вектора v? Если мы опустим перпендикуляр из точки C на прямую L, то в каком месте он пересечет L? Как разложить вектор c = C – A на составляющие вдоль прямой L и в направлении, перпендикулярном к L? ?

Slide 36

Решение A C v c L v┴ Строим вектор v┴ Опустив перпендикуляр из точки C на прямую L мы говорим, что вектор c разложен на составляющую Kv┴ вдоль v┴ и составляющую Mv┴ перпендикулярно к v, где K и M – некоторые константы Таким образом мы имеем: c = Kv + Mv┴ Зная c и v можно определить K и M: c ∙ v = Kv ∙ v + Mv┴ ∙ v Mv┴ Kv v┴ ∙ v = 0

Slide 37

Отражение Свойства отражения Угол падения равен углу отражения Отраженный луч лежит в той же плоскости, что падающий луч и перпендикуляр к поверхности, восстановленный в точке падения

Slide 38

Отражение a r n L m e e -m r = e - m e = a - m r = a – 2m m – проекция a на n

Slide 39

Векторное произведение двух векторов Векторное произведение (cross product, vector product) двух векторов – вектор Векторное произведение двух трехмерных векторов равно:

Slide 40

Свойства векторного произведения i  j = k; j  k = i; k  i = j Антисимметрия a  b = -b  a Линейность a  (b + c) = a  b + a  c Однородность (sa)  b = s (a  b)

Slide 41

Геометрический смысл векторного произведения Площадь = |a  b| a b a  b

Slide 42

Нахождение нормали к плоскости Любые 3 точки P1, P2, P3 определяют единственную плоскость, если они не находятся на одной прямой Нормаль к плоскости, проходящей через 3 заданные точки можно решить с помощью векторного произведения Построим два вектора: a = P2 – P1 и b = P3 – P1 Их векторное произведение перпендикулярно данным векторам, а, следовательно оно нормально к любой прямой, лежащей в плоскости векторов a и b

Slide 43

Отображение ключевых геометрических объектов

Slide 44

Вектор vs Точка Вектор в пространстве задается при помощи упорядоченной тройки чисел v = (3, 1, -8) Точка в пространстве тоже задается при помощи тройки чисел: P = (3, 1, -8) Однако, точки и векторы – это не одно и то же Точка имеет местоположение в пространстве, но не имеет размера и направления Вектор не имеет местоположения, но обладает размером и направлением

Slide 45

Системы координат и координатные фреймы Система координат обычно задается в виде трех осей, исходящих из начала отсчета Однако, точка начала отсчета расположена где-нибудь в «мире» Направления осей лучше всего задавать векторами Местоположение начала координат должно быть явно задано точкой

Slide 46

Координатный фрейм Координатный фрейм состоит из заданной точки O, называемой началом отсчета и трех взаимно перпендикулярных единичных векторов a, b и c Строго говоря, эти векторы должны быть линейно независимыми, однако взаимно перпендикулярные векторы координатных осей упрощают многие задачи компьютерной графики

Slide 47

Координатный фрейм с a b P v O v = v1a + v2b + v3c P = О + p1a + p2b + p3c P – O = p1a + p2b + p3c Точка P задается не просто тройкой чисел (p1, p2, p3), а тройкой вместе с началом отсчета

Slide 48

Однородное представление точки и вектора Полезно представлять точки и векторы с помощью одного и того же набора базовых объектов (a, b, c, O) Вектору v = v1a + v2b + v3c требуется четыре коэффициента (v1, v2, v3, 0) Точке P = p1a + p2b + p3c требуется четыре коэффициента (p1, p2, p3, 1) Четвертый компонент показывает, входит ли в в состав объекта начало отсчета O

Slide 49

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

Slide 50

Линейные комбинации векторов в однородных координатах Разность двух точек - вектор (x,y,z,1) – (u,v,w,1) = (x-u, y-v, z-w, 0) Сумма точки и вектора – точка (x,y,z,1) + (d,e,f,0) = (x+d, u+e, z+f, 1) Сумма двух векторов – вектор (d,e,f,0) + (m,n,r,0) = (d+m, e+n, f+r, 0) Имеет смысл масштабирование векторов 3(d,e,f,0) = (3d, 3e, 3f, 0) Имеет смысл создание любой линейной комбинации векторов Для векторов v=(v1,v2,v3,0) и w=(w1,w2,w3,0) и произвольных скаляров a и b имеем av+bw=(av1+bw1, av2+bw2, av3+bw3, 0), что является вектором

Slide 51

Аффинные комбинации точек Рассмотрим формирование линейной комбинации двух точек P=(P1,P2,P3,1) и R=(R1,R2,R3,1) со скалярами f и g fP+gR=(fP1+gR1, fP2+gR2, fP3+gR3, f+g) Результат является истинной точкой лишь в том случае, когда f+g=1 Если сумма коэффициентов линейной равна 1, такая комбинация является аффинной, т.о. единственная истинная комбинация точек – аффинная комбинация Любая аффинная комбинация точек является истинной точкой

Slide 52

Произвольная линейная комбинация точек Пусть дана линейная комбинация двух точек E=fP+gR, такая, что f+g≠0 Пусть начало отсчета смещено на вектор u, тогда точка P смещена на P+u, а точка R – на R+u Если E является истинной точкой, то она также должна быть смещена в новую точку E’=E+u, однако мы имеем: E’=fP + gR + (f+g)u Если f+g≠1, то E’≠E + u Иными словами, неаффинная комбинация точек в различных системах координат дает различные точки

Slide 53

Точка плюс вектор – аффинная комбинация точек Рассмотрим формирование точки P как смещение точки A на вектор v, масштабированный скаляром t P = A + tv Пусть v=B-A, тогда: P = A + t(B-A) P = tB + (1-t)A А это – ни что иное, как аффинная комбинация точек

Slide 54

Линейная интерполяция двух точек Аффинная комбинация точек, выраженная уравнением P=A(1-t) + Bt выполняет линейную интерполяцию между точками A и B Иными словами, x-компонент Px(t) генерирует величину, которая составляет t-ю часть расстояния между точками Ax и Bx Аналогично для y и z- компонент

Slide 55

Пример функции lerp // linear interpolation between a and b float lerp(float a, float b, float t) { return a + (b – a) * t; } Задание для самостоятельной работы – самостоятельно разработать функцию для линейной интерполяции между точками на 2D плоскости и в 3D пространстве

Slide 56

Твининг (tweening) Используя линейную интерполяцию можно создать эффект т.н. tweening’а - плавной анимации превращения одной геометрической фигуры в другую При этом точки исходной фигуры равномерно интерполируются с течением времени в точки конечной фигуры

Slide 57

Пример Tweening-а геометрической фигуры

Slide 58

Пример Tweening-а двух изображений t 0 1

Slide 59

Введение в преобразования

Slide 60

Пример преобразования двухмерной фигуры Объект до преобразования x y Объект после преобразования

Slide 61

Составление трехмерной сцены из примитивов Оригинальный блок

Slide 62

Просмотр сцены с различных точек наблюдения

Slide 63

Что осуществляют преобразования Пусть исходный объект задан последовательностью точек Pi: P1, P2, P3… Преобразование изменяет значения этих точек так, что на выходе получаются точки Q1, Q2, … Эти точки описывают преобразованный вариант того же самого объекта

Slide 64

Преобразование объекта и преобразование координат Преобразование можно рассматривать с двух сторон Преобразование объекта Координаты каждой точки меняются в соответствии с некоторыми законами, при неизменной системе координат Преобразование координат Старая система координат преобразовывается в новую и все точки объекта получают представление в новой системе координат

Slide 65

Преобразование точек Любое преобразование переводит каждую точку P в пространстве в новую точку Q согласно заданной формуле или алгоритму

Slide 66

Отображение точек в новые точки x y P Q T Точка P на плоскости отображена в точку Q при помощи отображения T Точка Q называется образом точки P при отображении T Преобразование объекта осуществляется посредством преобразования каждой из его точек. Для каждой точки используется та же самая функция T() Непрерывные преобразования осуществляют преобразование прямой линии в некоторую связную линию (не обязательно прямую)

Slide 67

Как это выглядит формально? В любом двухмерном координатном фрейме точки P и Q имеют следующее представление Преобразование воздействует на представление координаты точки P и дает представление точки Q в соответствии с некоторой функцией T(): Или более кратко:

Slide 68

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

Slide 69

При аффинных преобразованиях координаты точки Q являются линейными комбинациями соответствующих координат точки P m11, m12 – некоторые константы

Slide 70

Матричное представление аффинных преобразований Для любого аффинного преобразования третья строка матрицы всегда равняется (0, 0, 1) Аффинные преобразования могут применяться не только к точкам, но и к векторам

Slide 71

Геометрические эффекты элементарных аффинных преобразований Аффинные преобразования осуществляют комбинации из четырех элементарных преобразований Перемещение Масштабирование Поворот Сдвиг

Slide 72

Перемещение Преобразование перемещения осуществляет перенос точки вдоль заданного вектора Задача: что получится в результате применения преобразования переноса не к точке, а к вектору?

Slide 73

Перемещение

Slide 74

Масштабирование Масштабирование изменяет размер объекта и использует два масштабных множителя Sx и Sy для координат x и y соответственно

Slide 75

Масштабирование

Slide 76

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

Slide 77

Поворот

Slide 78

Сдвиг При сдвиг вдоль оси x координата y каждой точки остается неизменной, а координата x перемещается на величину, линейно возрастающую с ростом y При сдвиге вдоль оси y – ситуация противоположная Сдвиг вдоль оси x Сдвиг вдоль оси y

Slide 79

Сдвиг T T

Slide 80

Инвертирование аффинного преобразования Матрица M размерностью n на n называется невырожденной, если ее определитель |M| отличен от нуля В этом случае матрица M имеет обратную матрицу M-1, обладающую свойством: MM-1 = M-1M = I, где I – единичная матрица размерностью n на n Матрица, обратная к произведению квадратных матриц имеет вид: (AB)-1 = B-1A-1

Slide 81

Определитель матрицы С каждой квадратной матрицей связано некоторое число, называемое ее определителем Обозначается |M| или det M Mij – алгебраическое дополнение

Slide 82

Обратная матрица Матрица размерностью n на n называется невырожденной, если ее определитель отличен от нуля. В этом случае она имеет обратную матрицу M-1, обладающую свойством: MM-1 = M-1M = I Кроме того, (AB)-1 = B-1A-1 Пусть A – матрица обратная к матрице M. В этом случае ее ij-элемент равен:

Slide 83

Сложные преобразования Часто требуется осуществить сложное преобразование, состоящее из нескольких элементарных Поворот относительно произвольной точки (оси в 3D) Отражение относительно произвольной прямой (плоскости в 3D) Масштабирование и сдвиг относительно произвольных «опорных точек»

Slide 84

Композиция аффинных преобразований Процесс последовательного применения нескольких преобразований с целью формирования единого суммарного преобразования называется композицией (компоновкой, конкатенацией) этих преобразований

Slide 85

Пример P Q W T1() T () T2() ? Пусть преобразования T1 и T2 заданы матрицами M1 и M2 Тогда: Q = M1P W = M2Q = M2(M1P) В силу ассоциативности умножения матриц мы имеем: W = M2(M1P)=(M2M1)P = MP

Slide 86

Композиция аффинных преобразований При использовании однородных координат аффинные преобразования компонуются при помощи умножения матриц Матрицы располагаются в порядке, обратном по отношению к порядку применения преобразований: M = M2M1 Любое количество аффинных преобразований может быть скомпоновано простым умножением соответствующих матриц

Slide 87

Полезные свойства аффинных преобразований Сохранение аффинных комбинаций точек Сохранение прямых линий и плоскостей Сохранение параллельности прямых и плоскостей Столбцы матрицы показывают координатный фрейм Сохранение относительных пропорций Влияние на площади и объемы фигур:

Slide 88

Трехмерные аффинные преобразования

Slide 89

К трехмерным аффинным преобразованиям применимы те же идеи, что и к двухмерным В 3D пространстве точка P имеет координаты: P = O + Pxi + Pyj + Pzk

Slide 90

Пусть T() – аффинное преобразование, преобразующее точку P в точку Q Данное преобразование можно представить в виде матрицы M размерностью 4x4:

Slide 91

Элементарные трехмерные преобразования

Slide 92

Перемещение Матрица перемещения осуществляет перенос точки на вектор m = (m14, m24, m34)

Slide 93

Масштабирование Матрица масштабирования относительно начала отсчета имеет следующий вид:

Slide 94

Сдвиг Матрица единичного сдвига является единичной матрицей, в которой один из нулей заменен некоторой величиной f: Q = (Px, fPy, Pz) cмещение вдоль оси y

Slide 95

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

Slide 96

Элементарные повороты вокруг координатных осей z x y P’’ Q’’ P Q P’ Q’

Slide 97

Матрицы элементарных поворотов

Slide 98

Комбинирование поворотов Порядок, в котором осуществляются повороты вокруг различных осей имеет значение Трехмерные матрицы поворота некоммутативны Поворот в трех измерениях обычно строят как композицию трех элементарных поворотов Углы β1, β2, β3 в данном контексте называют углами Эйлера

Slide 99

Вращение вокруг произвольной оси При использовании углов Эйлера мы выполняем последовательность x-, y- и z-вращений Очень часто возникает необходимость поворота вокруг произвольной оси Теорема Эйлера: Любой поворот или последовательность поворотов вокруг произвольной точки эквивалентен повороту вокруг некоторой оси, проходящей через эту точку

Slide 100

Матрица поворота вокруг произвольной оси

Slide 101

Определение оси и угла поворота Иногда бывает полезно извлечь значения угла поворота и координаты оси вращения из матрицы. Пусть матрица вращения задана следующим образом: Угол вращения: Ось вращения

Slide 102

Изменения систем координат

Slide 103

Аффинные преобразования можно использовать для создания новой системы координат, в которой происходит отображение исходных точек Применяется, например, при моделировании сцен и создании виртуальных «камер»

Slide 104

Преобразование координатного фрейма c d i’ j’ O O’ P Пусть имеется преобразование T(.), выраженное матрицей M, которое переводит координатный фрейм с началом отсчета в точке O и осями i и j в координатный фрейм с началом отсчета O’ и осями i’ и j’

Slide 105

Последовательные преобразования координатного фрейма Пусть координатная система №1 переходит в систему №2 при помощи преобразования T1(.), а система №2 – в систему №3 при помощи преобразования T2(.) Заметим, что система №3 трансформируется относительно системы №2 Если координаты точки P в системе №3 равны (e,f,1)T, то чему будут равны координаты (a,b,1)T в системе №1?

Slide 106

Двукратное преобразование координатного фрейма Важным обстоятельством является тот факт, что сперва применяется преобразование M2, а затем M1, т.е. в обратном порядке по сравнению с применением преобразований к точкам Данный случай можно обобщить на произвольное количество преобразований координатного фрейма: M = M1 x M2 x … x Mn

Slide 107

Рисование трехмерных сцен

Slide 108

Составляющие элементы трехмерной сцены Камеры просмотра Позволяют задать положение и ориентацию «наблюдателя» в виртуальном пространстве и получать изображение объектов сцены с заданных точек Объекты сцены Предметы виртуального пространства, оптические среды, изображение которых может быть получено при помощью камер

Slide 109

Процесс визуализации трехмерной сцены z y x Ближняя плоскость Дальняя плоскость Отображаемый объем Плоскость просмотра Глаз

Slide 110

Процесс визуализации трехмерной сцены (продолжение) P P’ Проецирование точек на плоскость просмотра Преобразование в видовой порт (порт просмотра, View Port) После того, как координаты ключевых точек объекта преобразованы в порт просмотра осуществляется этап растеризации объекта

Slide 111

Позиционирование и ориентирование камеры Положение и ориентация камеры на сцене могут быть любыми. Позиционирование: Перемещаем камеру (глаз наблюдателя) в некоторую точку пространства Ориентация: Повернем камеру так, чтобы нацелить в желаемом направлении

Slide 112

Позиционирование и ориентирование камеры Перенос камеры в заданную точку пространства Ориентирование камеры в заданном направлении

Slide 113

Система координат, связанная с камерой Система координат камеры имеет начало, расположенное в точке глаза и три координатные оси: u, v, n n u v z x y Глаз Ось n направлена вдоль оси камеры по направлению к наблюдателю Ось u совпадает с направлением «вправо» Ось v – «вверх»

Slide 114

Свободное ориентирование камеры в пространстве Задание ориентации камеры в авиационных терминах Курс (heading) – управление направлением «взгляда» камеры (ось n) Тангаж (pitch) – управление креном камеры (вращение вдоль курса камеры) Рысканье (yaw) – отклонение от курса (вращение вокруг вертикальной оси) v

Slide 115

Построение векторов u, v и n Eye Look up Пусть нам известно: Положение глаз наблюдателя (Eye) Положение точки наблюдения (Look) Направление вектора «вверх» (up) Тогда: n=Eye – Look u=up  n v=n  u Затем производим нормализацию векторов u, v, и n n u v

Slide 116

Построение матрицы камеры z x y u v n Глаз V Матрица камеры V осуществляет преобразование точек из мировых координат в координаты камеры (преобразовывает систему координат камеры в исходную позицию камеры) Вектор u преобразовывается в вектор x Вектор v - в вектор y Вектор n - в вектор z

Slide 117

Построение матрицы камеры Матрица камеры имеет следующий вид:

Slide 118

Перспективная проекция точки z x y x y x* y* N P’ Pz Px Py P Py По признаку подобия треугольников: Следовательно: P’ x* y*

Slide 119

Перспективная проекция прямых линий

Slide 120

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

Slide 121

Точка схода параллельных прямых d d

Slide 122

Прямые, проходящие за «глазом» z y При попытке построить проекцию прямой, проходящей «за глазом» происходит «оборачивание проекции вокруг бесконечности» Плоскость просмотра Поэтому перед проецированием необходимо произвести отсечение части прямой, находящейся ближе к глазу, нежели ближняя плоскость отсечения

Slide 123

Добавление псевдоглубины

Slide 124

Особенности проецирования При проецировании отбрасывается информация о глубине – расстоянии до глаза Различные точки могут проецироваться в в одну и ту же точку Некоторые алгоритмы удаления невидимых поверхностей требуют знания глубины точек после проецирования

Slide 125

z x y P’ (x*, y*) P1 P2 Расстояние от точки P до глаза равно: Извлечение квадратных корней – довольно дорогостоящая операция, поэтому для оценки расстояния от точки P до глаза вычисляют псевдоглубину – оценка глубины точки P

Slide 126

Псевдоглубина Если две точки проецируются в одну и ту же точку, то более дальней из них соответствует та, у которой величина -Pz больше В качестве значения псевдоглубины может подойти значение –Pz Однако лучше выразить значение псевдоглубины z* в тех же терминах, что и координаты x* и y* - через знаменатель -Pz

Slide 127

Проецирование точки с сохранением информации о ее псевдоглубине a и b – некоторые константы Удачным решением было бы выбрать a и b таким образом, чтобы значение псевдоглубины изменялось в пределах -1 до +1: z* = -1 при Pz = -N z* = +1 при Pz = -F N – расстояние до ближней плоскости проецирования F – расстояние до дальней плоскости проецирования В этом случае:

Slide 128

Изменение псевдоглубины

Slide 129

Использование однородных координат Точка P = (Px, Py, Pz) в однородных координатах выражается в виде: P = (Px, Py, Pz, 1) Вектор v=(vx, vy, vz) в однородных выражается в виже: v = (vx, vy, vz, 0) Такой подход позволил представлять векторы и точки внутри координатных фреймов и выражать аффинные преобразования с помощью матриц

Slide 130

Дальнейшее развитие Точка P имеет целое семейство однородных представлений вида: (wPx, wPy, wPz, w) для любого ненулевого w Преобразование в однородные координаты: Добавить 1 (при необходимости, умножить все компоненты на любую ненулевую величину) Преобразование точки из однородных координат в обычные: Разделить все компоненты на последний, а затем отбросить его

Slide 131

Матрица аффинного преобразования Матрица аффинного преобразования имеет четвертой строкой (0, 0, 0, 1) При умножении такой матрицы на точку в однородных координатах, компонент w останется неизменным:

Slide 132

Эксперимент Что, если четвертая строка матрицы будет отличной от (0, 0, 0, 1)? Например, такой: При умножении такой матрицы на точку в однородных координатах с любым значением w мы получим: Результатом данного умножения будет некоторая точка. Какая именно?

Slide 133

Для выяснения фактических координат данной точки разделим компоненты данной точки на четвертый и отбросим его: А это есть ни что иное, как координаты точки после перспективного проецирования! Данный этап называется перспективным делением

Slide 134

Матрица перспективного преобразования Матрица, четвертая строка которой не равна (0, 0, 0, 1), производит перспективное преобразование Данное преобразование не является аффинным Это именно преобразование, а не проекция. Результатом данного преобразования является точка той же размерности, что и аргумент

Slide 135

Получение перспективной проекции Перспективное преобразование переносит трехмерную точку P в другую трехмерную точку в соответствии с отображением: Для получения проекции точки мы можем просто проигнорировать третий компонент, заменив его на нуль:

Slide 136

Что такое перспективная проекция? Перспективная проекция = Перспективное преобразование + Ортографическое преобразование

Slide 137

Геометрическая природа перспективного преобразования

Slide 138

Перспективное преобразование превращает трехмерную точку P в другую трехмерную точку Можно рассматривать данное преобразование как деформирование трехмерного пространства, обладающее следующим свойствами: Сохранение прямолинейности (прямые линии преобразуются в прямые линии) Сохранение плоскостности (плоскости – в плоскости) Сохранение «промежуточности» (точка внутри объекта преобразуется в другую точку внутри преобразованного объекта)

Slide 139

Деформирование отображаемого объема перспективным преобразованием z y z y Объект до преобразования +1 -1 -1 +1 Объект после преобразования Перспективное преобразование деформирует объекты так, что при их просмотре в ортографической проекции они выглядят такими же, как выглядели бы исходные объекты в перспективной проекции

Slide 140

Преобразование в канонический отображаемый объем z y x 1 1 -1 z x y Перспективное преобразование (left, top, -N) (right, bottom, -N) Коэффициенты left, top, right, bottom можно вычислить, зная угол обзора камеры и соотношение ее сторон:

Slide 141

Порт просмотра

Slide 142

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

Slide 143

Преобразование в канонический объем (возникают искажения из-за «втискивания» сцены внутрь канонического куба) Преобразование в порт просмотра (исправление форматных искажений объекта)

Slide 144

Преобразование в порт просмотра Преобразование в порт просмотра отображает точку внутри канонического объема в точку на устройстве отображения (напр. экране) Данное преобразование является аффинным и может быть представлено в виде матрицы типа: (left, top) – координаты верхнего левого угла порта просмотра в экранных координатах (width, height) – размеры порта просмотра в экранных координатах (sx, sy) – координаты точки в экране dz – мера расстояния до точки (от 0 до 1)

Slide 145

Пример

Slide 146

Вопросы?

Summary: Лекция посвящена обзору математических основ векторной графики, матричных преобразований.

Tags: vector graphics cg linear algebra matrix линейная алгебра вектор матрица матрицы вектора 3d преобразования

URL: