05 - Векторный анализ, трансформации и матрицы

0

No comments posted yet

Comments

Slide 110

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

Slide 111

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

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(v2 - v1)

Slide 22

Пример v1 v2 v a(v2- v1) Выпуклой комбинацией векторов 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┴ + b┴ (Aa) ┴ = Aa┴, для любого скаляра A Реверсирование: a┴ ┴ = (a┴)┴ = -a

Slide 34

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

Slide 35

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

Slide 36

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

Slide 37

Решение 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 38

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

Slide 39

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

Slide 40

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

Slide 41

Свойства векторного произведения 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 42

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

Slide 43

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

Slide 44

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

Slide 45

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

Slide 46

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

Slide 47

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

Slide 48

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

Slide 49

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

Slide 50

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

Slide 51

Линейные комбинации векторов в однородных координатах Разность двух точек - вектор (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 52

Аффинные комбинации точек Рассмотрим формирование линейной комбинации двух точек 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 53

Произвольная линейная комбинация точек Пусть дана линейная комбинация двух точек 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 54

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

Slide 55

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

Slide 56

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

Slide 57

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

Slide 58

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

Slide 59

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

Slide 60

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

Slide 61

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

Slide 62

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

Slide 63

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

Slide 64

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

Slide 65

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

Slide 66

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

Slide 67

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

Slide 68

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

Slide 69

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

Slide 70

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

Slide 71

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

Slide 72

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

Slide 73

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

Slide 74

Перемещение

Slide 75

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

Slide 76

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

Slide 77

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

Slide 78

Поворот

Slide 79

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

Slide 80

Сдвиг T T

Slide 81

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

Slide 82

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

Slide 83

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

Slide 84

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

Slide 85

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

Slide 86

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

Slide 87

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

Slide 88

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

Slide 89

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

Slide 90

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

Slide 91

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

Slide 92

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

Slide 93

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

Slide 94

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

Slide 95

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

Slide 96

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

Slide 97

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

Slide 98

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

Slide 99

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

Slide 100

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

Slide 101

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

Slide 102

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

Slide 103

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

Slide 104

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

Slide 105

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

Slide 106

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

Slide 107

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

Slide 108

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

Slide 109

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

Slide 110

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

Slide 111

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

Slide 112

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

Slide 113

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

Slide 114

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

Slide 115

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

Slide 116

Построение векторов 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 117

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

Slide 118

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

Slide 119

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

Slide 120

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

Slide 121

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

Slide 122

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

Slide 123

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

Slide 124

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

Slide 125

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

Slide 126

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

Slide 127

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

Slide 128

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

Slide 129

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

Slide 130

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

Slide 131

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

Slide 132

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

Slide 133

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

Slide 134

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

Slide 135

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

Slide 136

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

Slide 137

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

Slide 138

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

Slide 139

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

Slide 140

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

Slide 141

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

Slide 142

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

Slide 143

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

Slide 144

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

Slide 145

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

Slide 146

Пример

Slide 147

Вопросы?

URL: