Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OpenGL.doc
Скачиваний:
8
Добавлен:
01.09.2019
Размер:
181.76 Кб
Скачать

Модельно-видовые преобразования

К модельно-видовым преобразованиям будем относить перенос, поворот и изменение масштаба вдоль координатных осей. Для проведения этих операций достаточно умножить на соответствующую матрицу каждую вершину объекта и получить измененные координаты этой вершины:

(x’, y’, z’, 1)T = M * (x, y, z, 1)T,

где M – матрица модельно-видового преобразования. Перспективное преобразование и проектирование производится аналогично. Сама матрица может быть создана с помощью следующих команд:

void glTranslate[f d] (GLtype x, GLtype y, GLtype z);

void glRotate[f d] (GLtype angle, GLtype x, GLtype y, GLtype z);

void glScale[f d] (GLtype x, GLtype y, GLtype z).

glTranlsate*() производит перенос объекта, прибавляя к координатам его вершин значения своих параметров.

glRotate*() производит поворот объекта против часовой стрелки на угол angle (измеряется в градусах) вокруг вектора (x,y,z).

glScale*() производит масштабирование объекта (сжатие или растяжение) вдоль вектора (x,y,z), умножая соответствующие координаты его вершин на значения своих параметров.

Все эти преобразования изменяют текущую матрицу, а поэтому применяются к примитивам, которые определяются позже. Если надо повернуть один объект сцены, а другой оставить неподвижным, удобно сначала сохранить текущую видовую матрицу в стеке командой glPushMatrix(), затем вызвать glRotate*() с нужными параметрами, описать примитивы, из которых состоит этот объект, а затем восстановить текущую матрицу командой glPopMatrix().

В общем случае матричные преобразования в OpenGL нужно записывать в обратном порядке. Например, если нужно сначала повернуть объект, а затем передвинуть его, сначала происходит вызов команды glTranslate(), а только потом – glRotate(). После этого необходимо определить сам объект.

Задание к лабораторной работе

Напишите программное приложение, реализующие следующие операции:

  • создание исходного изображения объекта согласно варианту задания;

  • вращение, перемещение и масштабирование объекта при помощи стандартных функций OpenGL.

Таблица 12.4.1

Варианты заданий

варианта

Примитивы

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

1

смежные треугольники

поворот

2

веер треугольников

вращение

3

смежные четырехугольники

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

4

веер треугольников

поворот

5

связанные четырехугольники

вращение

6

смежные треугольники

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

7

многоугольники

поворот

8

смежные четырехугольники

вращение

9

веер треугольников

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

10

смежные четырехугольники

поворот

Требования к отчету

Отчет по лабораторной работе должен содержать:

1. Цель работы, вариант задания, краткое описание проделанной работы.

2. Ответы на контрольные вопросы.

3. Выводы по проделанной работе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]