Компьютерная графика Лекция третья
DESCRIPTION
Компьютерная графика Лекция третья. Тема Координаты, примитивы, преобразования. Подготовлено А.А.Пименовым [email protected] Для 4 курса мат.-мех. СПбГУ в 2006. Декартовы и полярные координаты. Декартовы координаты на плоскости и в пространстве Полярные координаты - PowerPoint PPT PresentationTRANSCRIPT
1
Компьютерная графикаЛекция третья
ТемаКоординаты, примитивы, преобразования
Подготовлено А.А.Пименовым [email protected]Для 4 курса мат.-мех. СПбГУ в 2006
2
Декартовы и полярные координаты• Декартовы
координаты на плоскости и в пространстве
• Полярные координаты
• Цилиндрические координаты
• Сферические координаты
3
Крен, Тангаж, Рыскание
тангаж
крен
рыскание
4
Способы задания примитивов(Линия и Отрезок)• Две точки • Параметрическое
задание• Каноническое
представление• Как пересечение
плоскостей
5
Способы задания примитивов(Плоскость)• Три точки
• Аналитическое задание
• Задание с нормалью
6
Формулы и операции (векторное произведение)
7
Формулы и операции (смешанное произведение)
8
Пересечения и принадлежность
• Параллельные прямые
• Скрещивающиеся прямые
• Прямая и плоскость
9
Представление сцены
Мировая система кординат
• Система координат подсцены
Точка
10
Замена системы координат
• Со сдивгом • Без сдвига
11
Аффинные преобразованияАффиное преобразоване сохраняет параллельность и отношения расстояний
12
Сдвиг, масштабирование
13
Поворот
14
Собственные числа и геометрический смысл• Комплексный оператор в С3 имеет
собственное число• Более того имеет 3 собственных числа• Одно из них вещественное… если
коэффициенты вещественные• Ось вращения
15
Перенос
16
Проективные (однородные) координаты• Точность• Удобство• Возможность представлять
несобственные элементы
a ,b ,c⇔[x : y : z :w ] ,где {a=xw
b=yw
c=zw
〛
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
18
Перспективные преобразования
• Общее рассуждения про нижнюю строку матрицы
19
Как быстро попарно умножать вектора?(x , y ,z ) * (a , b ,c) = ax + by + cz =
(x + b) * (y + a) – yx - ab + cz
Но xy и ab можно считать заранее... !
20
Кватернионы
∣q∣=w2x2y2z2q°=[w ,−v ]
q−1=q°
∣q∣2
∣q∣=1⇒q−1=q°
q=[cos 2 ,sin 2 ∗v ]
Гамильтон
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;
}
22
Матрицы и кватернионы
• 1-2y2-2z2 2xy-2wz 2xz+2wy2xy+2wz 1-2x2-2z2 2yz-2wx 2xz-2wy 2yz+2wx 1-2x2-2y2
23
Применение кватерниона к вектору
24
• Скалярное произведение 3 умн, 2 сл• Векторное произведение 6 умн, 3 сл• Перемножение двух матриц 3x3 27 умножений и 18
сложений.• Перемножение двух кватернионов 16 умн и 12 сл. или (8+4) умн
+ 32 сл• Применение кватерниона к вектору • Умножение матрицы на вектор 9 умн + 6 сл• Конвертирование матрицы в кватернион требует 7 сложений и 2
условных перехода.• Конвертирование кватерниона в матрицу требует 16
умножений 15 сложений и 1 деление.• Конвертирование матрицы вращения в кватернион, умножение
на другой кватернион, а затем конвертирование обратно в матрицу потребует 32 умножений 34 сложений 2 условных перехода и 1 деление.
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).
Выводится исходя из линейной комбинации, единичной длинны и угла
При малых углах используют обычную интерполяцию.
26
Преборазование нормали
n∗x−p=0x A∗xp A∗pn∗A−1∗A x−p=0⇒nn∗A−1
27
Несколько замечаний
• О физике при повороте и кватернионе в степени
• О площади многоугольника
– о попадании точки в многоугольник
• О замене двумерного поворота тремя сдвигами
S P =12∑i=0
n−1X i∗Y i1−Y i∗X i1
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
29
Q&A
30
Thanks!