
Часть 3-1.ppt
- Количество слайдов: 28
Интерактивная Компьютерная Графика Часть 3 -1 (системы координат и матрицы)
Вход - выход Система объектов Экранное окно Open. GL Мировое окно Экран Дисплей Монитор 1 из портов просмотра
Преобразования координат Мировые координаты Модельно-видовые преобразования Видовые координаты Проецирование Отсечение Нормализация Нормализованние координаты Преобразование в порт просмотра Оконные координаты
Модельно-видовые преобразования ü Перемещение (сдвиг, перенос) на вектор (dx, dy, dz)T Ø gl. Translatef (dx, dy, dz) • x` = x + dx • y` = y + dy • z` = z + dz
Модельно-видовые преобразования ü Масштабирование (сжатие и растяжение) вдоль осей в (sx, sy, sz) раз Ø gl. Scalef (sx, sy, sz) • x` = x * sx • y` = y * sy • z` = z * sz Ø Примечание: если один из параметров равен 0, тогда преобразование не будет афинным
Модельно-видовые преобразования ü Поворот на угол angle против часовой стрелки вдоль вектора (rx, ry, rz) Ø gl. Rotatef (angle, rx, ry, rz)
Матричные операции ü Активизация матрицы: gl. Matrix. Mode ( param) Ø GL_MODELVIEW – модельно-видовая матрица Ø GL_PROJECTION – проекционная матрица Ø GL_TEXTURE – текстурная матрица ü Загрузка матрицы: gl. Load. Matrix ( matr_by_columns ) ü Сброс матрицы: gl. Load. Identity () ü Умножение матрицы слева: gl. Mult. Matrix (matr_by_columns ) ü Сохранение матрицы в стеке: gl. Push. Matrix () ü Восстановление матрицы из стека: gl. Pop. Matrix ()
Матричные операции ü Изменение положения камеры: glu. Look. At (eye. X, eye. Y, eye. Z, at. X, at. Y, at. Z, up. X, up. Y, up. Z )
Матричные операции gl. Translatef ( 100, 10 )
Матричные операции gl. Scalef ( 1. 5, 0. 5, 1 )
Матричные операции gl. Rotatef ( 15, 0, 0, 1 )
Матричные операции gl. Rotatef ( 15, 0, 0, 1 )
Матричные операции gl. Rotatef ( 15, 0, 0, 1 )
Матричные операции gl. Rotatef ( 15, 0, 0, 1) gl. Color 3 ub ( 255, 0, 0 ); gl. Begin ( GL_QUADS ); gl. Vertex 2 f ( 100, 100 ); gl. Vertex 2 f ( 100, 300 ); gl. Vertex 2 f ( 300, 100 ); gl. Push. Matrix(); gl. Color 3 ub ( 255, 0, 0 ); gl. Begin ( GL_QUADS ); gl. Vertex 2 f ( 100, 100 ); gl. Vertex 2 f ( 100, 300 ); gl. Vertex 2 f ( 300, 100 ); gl. End (); gl. Pop. Matrix(); gl. Color 3 ub ( 0, 255, 0 ); gl. Vertex 2 f ( 200, 200 ); gl. Vertex 2 f ( 200, 400 ); gl. Vertex 2 f ( 400, 200 ); gl. End (); gl. Color 3 ub ( 0, 255, 0 ); gl. Begin ( GL_QUADS ); gl. Vertex 2 f ( 200, 200 ); gl. Vertex 2 f ( 200, 400 ); gl. Vertex 2 f ( 400, 200 ); gl. End ();
Матричные операции gl. Translatef ( 100, 10 ) glu. Look. At (-100, 10, -100, 0, 0, 1, 0 )
Преобразования проекции Куб видимости near far Плоскости отсечения Передняя (ближняя) по OZ Задняя (дальняя) по OZ left Левая right Правая top Верхняя bottom Нижняя
Преобразования проекции Объекты не видимы Куб видимости OY Объекты видимы OZ Плоскость просмотра OX near, начало видимости Наблюдатель (точка просмотра) Плоскости отсечения (границы видимости, грани куба видимости) far, конец видимости near Передняя (ближняя) по OZ far Задняя (дальняя) по OZ left Левая right Правая top Верхняя bottom Нижняя
Преобразования проекции ü Ортографическая (параллельная) проекция: Ø void gl. Ortho ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far ) Ø void glu. Ortho 2 D ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top ) glu. Ortho 2 D ( left, right, bottom, top ) ≡ gl. Ortho ( left, right, bottom, top, -1, 1 ) Куб видимости Параллелограмм Система координат Левосторонняя ( left, bottom, -near ) левый нижний угол окна вывода ( right, top, правый верхний угол окна вывода -near )
Преобразования проекции ü Перспективная (центральная) проекция: Ø void glu. Perspective ( GLdouble angle_y, GLdouble aspect, GLdouble near, GLdouble far ) Ø void gl. Frustum ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far ) gl. Frustum ( -right, -top, near, far) ≡ glu. Perspective ( angle_y, aspect, near, far ) Куб видимости Усеченная пирамида Система координат Левосторонняя angle_y Угол видимости по OY ( 0° - 180°) = 2 * arctg( top / near ) aspect Угол видимости по OX = right / top
Преобразования проекции gl. Ortho ( left, right, bottom, top, near, far ) К точке наблюдения
Преобразования проекции Аксонометрическое проецирование: проецирующие лучи перпендикулярны плоскости проекций Косоугольное проецирование: проецирующие лучи НЕ перпендикулярны плоскости проекций
Преобразования проекции gl. Frustum ( left, right, bottom, top, near, far ) К точке наблюдения
Преобразования проекции ü Дополнительные плоскости отсечения (до 6 штук) void gl. Clip. Plane (GLenum plane, const GLdouble *equation) equation – массив коэффициентов отсекающей плоскости вида Ax + By + Cz + D = 0 gl. Enable ( GL_CLIP_PLANE plane ) // включить gl. Disable ( GL_CLIP_PLANE plane ) // выключить
Преобразование координат ü Мировые координаты Ø На входе: координаты в локальной системе координат (x. L, y. L, z. L)T Ø Перевод в глобальную (правостороннюю) систему координат (x. G, y. G, z. G)T
Преобразование координат ü Видовые координаты Ø На входе: мировые координаты (x, y, z)T Ø Перевод в расширенные координаты: (x, y, z, 1)T Ø Модельно-видовые преобразования: M * (x, y, z, 1)T = (x`, y`, z`, 1)T Ø На выходе: видовые координаты (x`, y`, z`, 1)T
Преобразование координат ü Нормализованные координаты Ø На входе: видовые координаты (x, y, z, w)T Ø Преобразования проекции и отсечения: M * (x, y, z, w)T = (xс, yс, zс, wс)T Ø Преобразование нормализации: На выходе: нормализованные координаты
Преобразование координат ü Оконные координаты Ø На входе: нормализованные координаты (x, y, z)T Ø Определяется порт просмотра: gl. View. Port(x. P, y. P, width, height) Ø Определяется параметры буфера глубины: gl. Depth. Range(near, far) Ø Расчет оконных координат (xw, y w , z w )T :
Системы координат ЛСК 2 Y X Z Y X ОСК МСК ЛСК 1