С<-СТ, С «-СБ, С<-СК.

Операции установки элементов ТМП обозначаются так: С«-Т, С «-в, С<-1*.

В большинстве графических систем можно присвоить элементам ТМП значения из любой другой матрицы или умножить ее справа на произвольную матрицу М: С<-М, с<-см.

0 В OpenGL матрица вида представляет собой матрицу аффинного преобразования, которая имеет только 12 степеней свободы, как об этом уже упоминалось в разделе 4.5. Матрица проецирования, которая будет рассмотрена в главе 5, также имеет размер 4x4, но не является матрицей аффинного преобразования.

" В OpenGL используется только умножение справа. PHIGS допускает умножение как справа, так и слева.

Объекты и геометрические преобразования

4.9.2. Поворот, сдвиг и масштабирование В OpenGL матрица ТМП, которая преобразует координатные описания всех примитивов, является произведением двух матриц - матрицы вида GL_MODELVIEW и матрицы проецирования GL_PR0JECTI0N (рис. 4.55). Программист имеет возможность манипулировать каждой из них по отдельности, выбирая нужную с помощью функции glMatrixMode( ). Выбранная матрица загружается вызовом функции glLoadMatrixf(<указатель_на_матрицу>); или приравнивается к единичной матрице (инициализируется) вызовом функции glLoadIdentity();

4.9. Матрицы преобразований в OpenGL

Произвольную матрицу размера 4x4 можно задать указателем на массив из 16 чисел, в котором элементы матрицы перечислены по столбцам. Изменить выбранную матрицу можно с помощью функции умножения справа glMultMatrixf ( <указатель_на_матрицу>). Для выполнения поворота, сдвига и масштабирования служат три специальные функции:

glRotatef(angle, vx, vy, vz); glTranslatef(dx, dy, d2); glScalef(sx, sy, sz);

Каждая из этих функций изменяет выбранную с помощью glMatrixMode( ) матрицу текущего состояния, домножая ее справа. В функции поворота glRotatef (angle, vx, vy, vz) первый аргумент angle задает угол поворота в градусах, а три последующих - vx, vy и vz - компоненты вектора оси поворота. Аргументы функции сдвига glTranslatef ( )- компоненты вектора смещения. Аргументы функции масштабирования glScalef () - масштабные коэффициенты по координатным осям.


⇐ Предыдущая| |Следующая ⇒