Компьютерная графика Лекция третья

30
1 Компьютерная графика Лекция третья Тема Координаты, примитивы, преобразования Подготовлено А.А.Пименовым [email protected] Для 4 курса мат.-мех. СПбГУ в 2006

Upload: silas

Post on 18-Mar-2016

102 views

Category:

Documents


9 download

DESCRIPTION

Компьютерная графика Лекция третья. Тема Координаты, примитивы, преобразования. Подготовлено А.А.Пименовым [email protected] Для 4 курса мат.-мех. СПбГУ в 2006. Декартовы и полярные координаты. Декартовы координаты на плоскости и в пространстве Полярные координаты - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Компьютерная графика Лекция третья

1

Компьютерная графикаЛекция третья

ТемаКоординаты, примитивы, преобразования

Подготовлено А.А.Пименовым [email protected]Для 4 курса мат.-мех. СПбГУ в 2006

Page 2: Компьютерная графика Лекция третья

2

Декартовы и полярные координаты• Декартовы

координаты на плоскости и в пространстве

• Полярные координаты

• Цилиндрические координаты

• Сферические координаты

Page 3: Компьютерная графика Лекция третья

3

Крен, Тангаж, Рыскание

тангаж

крен

рыскание

Page 4: Компьютерная графика Лекция третья

4

Способы задания примитивов(Линия и Отрезок)• Две точки • Параметрическое

задание• Каноническое

представление• Как пересечение

плоскостей

Page 5: Компьютерная графика Лекция третья

5

Способы задания примитивов(Плоскость)• Три точки

• Аналитическое задание

• Задание с нормалью

Page 6: Компьютерная графика Лекция третья

6

Формулы и операции (векторное произведение)

Page 7: Компьютерная графика Лекция третья

7

Формулы и операции (смешанное произведение)

Page 8: Компьютерная графика Лекция третья

8

Пересечения и принадлежность

• Параллельные прямые

• Скрещивающиеся прямые

• Прямая и плоскость

Page 9: Компьютерная графика Лекция третья

9

Представление сцены

Мировая система кординат

• Система координат подсцены

Точка

Page 10: Компьютерная графика Лекция третья

10

Замена системы координат

• Со сдивгом • Без сдвига

Page 11: Компьютерная графика Лекция третья

11

Аффинные преобразованияАффиное преобразоване сохраняет параллельность и отношения расстояний

Page 12: Компьютерная графика Лекция третья

12

Сдвиг, масштабирование

Page 13: Компьютерная графика Лекция третья

13

Поворот

Page 14: Компьютерная графика Лекция третья

14

Собственные числа и геометрический смысл• Комплексный оператор в С3 имеет

собственное число• Более того имеет 3 собственных числа• Одно из них вещественное… если

коэффициенты вещественные• Ось вращения

Page 15: Компьютерная графика Лекция третья

15

Перенос

Page 16: Компьютерная графика Лекция третья

16

Проективные (однородные) координаты• Точность• Удобство• Возможность представлять

несобственные элементы

a ,b ,c⇔[x : y : z :w ] ,где {a=xw

b=yw

c=zw

Page 17: Компьютерная графика Лекция третья

17

Обобщенные преобразования

• Матрица 4x4X=A∗xb

X= a1,1 a1,2 a1,3a2,1 a2,2 a2,3a3,1 a3,2 a3,3

∗xyz ∗abc X=A a

bc

t u v s ∗xyz1

Page 18: Компьютерная графика Лекция третья

18

Перспективные преобразования

• Общее рассуждения про нижнюю строку матрицы

Page 19: Компьютерная графика Лекция третья

19

Как быстро попарно умножать вектора?(x , y ,z ) * (a , b ,c) = ax + by + cz =

(x + b) * (y + a) – yx - ab + cz

Но xy и ab можно считать заранее... !

Page 20: Компьютерная графика Лекция третья

20

Кватернионы

∣q∣=w2x2y2z2q°=[w ,−v ]

q−1=q°

∣q∣2

∣q∣=1⇒q−1=q°

q=[cos 2 ,sin 2 ∗v ]

Гамильтон

Page 21: Компьютерная графика Лекция третья

21

Умножение кватернионов

void MulQuaternions(Quaternion *res, const Quaternion *q1, const Quaternion *q2) { float A, B, C, D, E, F, G, H; A = (q1->w + q1->x) * (q2->w + q2->x);

B = (q1->z - q1->y) * (q2->y - q2->z); C = (q1->x - q1->w) * (q2->y + q2->z); D = (q1->y + q1->z) * (q2->x - q2->w); E = (q1->x + q1->z) * (q2->x + q2->y); F = (q1->x - q1->z) * (q2->x - q2->y); G = (q1->w + q1->y) * (q2->w - q2->z); H = (q1->w - q1->y) * (q2->w + q2->z);

res->w = B + (-E - F + G + H) * 0.5; res->x = A - ( E + F + G + H) * 0.5; res->y =-C + ( E - F + G - H) * 0.5; res->z =-D + ( E - F - G + H) * 0.5;

}

Page 22: Компьютерная графика Лекция третья

22

Матрицы и кватернионы

• 1-2y2-2z2  2xy-2wz  2xz+2wy2xy+2wz  1-2x2-2z2  2yz-2wx 2xz-2wy    2yz+2wx  1-2x2-2y2 

Page 23: Компьютерная графика Лекция третья

23

Применение кватерниона к вектору

Page 24: Компьютерная графика Лекция третья

24

• Скалярное произведение 3 умн, 2 сл• Векторное произведение 6 умн, 3 сл• Перемножение двух матриц 3x3 27 умножений и 18

сложений.• Перемножение двух кватернионов 16 умн и 12 сл. или (8+4) умн

+ 32 сл• Применение кватерниона к вектору • Умножение матрицы на вектор 9 умн + 6 сл• Конвертирование матрицы в кватернион требует 7 сложений и 2

условных перехода.• Конвертирование кватерниона в матрицу требует 16

умножений  15 сложений  и 1 деление.• Конвертирование матрицы вращения в кватернион, умножение

на другой кватернион, а затем конвертирование обратно в матрицу потребует  32 умножений 34 сложений  2 условных перехода и 1 деление.

Page 25: Компьютерная графика Лекция третья

25

Сферическая линейная интерполяция

SLERP(t) =  (p sin((1–t)a) – q sin(ta)) / sin(a) где q и p - кватернионы. t - изменяется от 0 до 1, a - угол между q и p, cos(a) = (q,p)/(|q|*|p|) = (q,p).

Выводится исходя из линейной комбинации, единичной длинны и угла

При малых углах используют обычную интерполяцию.

Page 26: Компьютерная графика Лекция третья

26

Преборазование нормали

n∗x−p=0x A∗xp A∗pn∗A−1∗A x−p=0⇒nn∗A−1

Page 27: Компьютерная графика Лекция третья

27

Несколько замечаний

• О физике при повороте и кватернионе в степени

• О площади многоугольника

– о попадании точки в многоугольник

• О замене двумерного поворота тремя сдвигами

S P =12∑i=0

n−1X i∗Y i1−Y i∗X i1

Page 28: Компьютерная графика Лекция третья

28

Links

• http://www.gamedev.ru/articles/?id=30129• http://en.wikipedia.org• http://www.gamedev.ru/users/wat/articles/quaternions• http://www.pm298.ru/• http://02-07-90327.fizteh.ru/index/kvaternion1/f_otc1

Page 29: Компьютерная графика Лекция третья

29

Q&A

Page 30: Компьютерная графика Лекция третья

30

Thanks!