OpenGL. Компьютерная графика. Васильев С.А. - 28 стр.

UptoLike

Составители: 

30
СОСТОЯНИЕ МАТРИЦ ПРЕОБРАЗОВАНИЯ МОЖНО СОХРАНЯТЬ И ВЫЗЫВАТЬ ПО
МЕРЕ НАДОБНОСТИ. ДЛЯ ЭТО СУЩЕСТВУЮТ КОМАНДЫ:
void glPushMatrix (void)
void glPopMatrix (void)
Эти команды сохраняют и читают текущую матрицу преобразования из стека. Для каждого вида
матриц преобразований имеется свой стек.
10.2 Модельно-видовые преобразования
ОПРЕДЕЛЕНИЕ МАТРИЦЫ ВИДОВОГО ПРЕОБРАЗОВАНИЯ УДОБНЕЕ ОСУЩЕСТВ-
ЛЯТЬ СПЕЦИАЛЬНЫМИ КОМАНДАМИ OPENGL: ПЕРЕНОС, МАСШТАБИРОВАНИЕ И
ВРАЩЕНИЕ. ПРЕОБРАЗОВАНИЯ ОСУЩЕСТВЛЯЮТСЯ В МИРОВОЙ СИСТЕМЕ КООРДИ-
НАТ. РАССМОТРИМ ИХ ПОДРОБНЕЕ.
void glTranslate[f d] (GLtype Dx, GLtype Dy, GLtype Dz)
ЭТА КОМАНДА ГОТОВИТ МАТРИЦУ ПРЕОБРАЗОВАНИЯ ДЛЯ ПЕРЕНОСА ГРАФИЧЕ-
СКОГО ОБЪЕКТА НА РАССТОЯНИЕ DX ПО ОСИ Х, НА РАССТОЯНИЕ DY ПО ОСИ У И НА
РАССТОЯНИЕ DZ ПО ОСИ Z.
void glScale[f d] (GLtype Sx, GLtype Sy, GLtype Sz)
ПРИ ПОМОЩИ ЭТОЙ КОМАНДЫ ОСУЩЕСТВЛЯЕТСЯ ФОРМИРОВАНИЕ ВИДОВОЙ
МАТРИЦЫ ДЛЯ МАСШТАБИРОВАНИЯ ОБЪЕКТА ВДОЛЬ ОСЕЙ МИРОВЫХ КООРДИНАТ.
В SX РАЗ ВДОЛЬ ОСИ Х, В SY РАЗ ВДОЛЬ ОСИ У И В SZ РАЗ ВДОЛЬ ОСИ Z.
VOID GLROTATE[F D](GLTYPE ANGLE, GLTYPE X, GLTYPE Y, GLTYPE Z)
Эта команда рассчитывает видовую матрицу для выполнения вращения объекта против часовой
стрелки на угол angle относительно радиус-вектора, заданного параметрами x, y и z. Внимание! Угол
angle задается в градусах.
Необходимо помнить, что на самом деле преобразования осуществляются не над самим объектом,
а над его локальной системой координат. Это очень удобно, когда в одну глобальную систему коорди-
нат сцены необходимо вставить определенным образом несколько объектов, описанных в своих систе-
мах локальных координат. Поясним на примере (все рассматриваем в плоскости z = 0). Пусть требуется
объект А (квадрат), заданный в своей системе координат, переместить вдоль оси x на 2 единицы и раз-
вернуть на 45° против часовой стрелки относительно оси zм. рис. 2). Такая постановка задачи в
OpenGL не применима, так как объект определяется только в конце своих геометрических преобразова-
ний. Правильнее было сказать: необходимо развернуть на 45° (против часовой стрелки) систему коор-
динат относительно вектора (0,0,1), после чего, переместить ее (относительно старого положения) в но-
вое место вдоль вектора (2,0,0) и определить объект А в новом положении системы координат.
Рис. 2 Пояснение модельно-видовых преобразований в OpenGL
Для выполнения такой задачи можно использовать следующий фрагмент программы модельно-
видового преобразования:
Y
45°
2
y
x
y
x
y′′
x
Х
Шаг 1
Шаг 2
Шаг 3
Шаг 4
0