glRotatef ( (GLfloat) angle, 1.0, 0.0, 0.0 ) ; drawBox ( -1.0, 1.0, -1.0, 1.0, -5.0, 5.0 );
Перед рисованием следующего блока начало локальной системы координат переносится из центра первого блока на 5 единиц в отрицательном направлении оси Ог. Это помещает центр локальной системы координат в конце первого члена руки. Это есть опорная точка для второго члена -точка, где первый и второй блоки сочленяются. Затем локальная система координат поворачивается вокруг оси Ох и рисуется следующий блок.
glTranslatef ( 0.0, 0.0, -5.0 ) ;
glRotatef ( -(GLfloat) angle / 2.0, 1.0, 0.0, 0.0 ); drawBox ( -1.0, 1.0, -1.0, 1.0, -10.0, 0.0);
Команды для рисования третьего члена аналогичны. glTranslatef ( 0.0, 0.0, -5.0 );
glRotatef ( -(GLfloat) angle / 2.0, 1.0, 0.0, 0.0 ); drawBox ( -1.0, 1.0, -1.0, 1.0, -10.0, 0.0);
Чтобы задаваемые объекты могли быть нарисованы, необходимо задать способ проектирования; OpenGL поддерживает два вида проектирования -параллельное и перспективное.
Основы библиотеки OpenGL
Преобразование проектирования задает, как объекты будут проектироваться на экран и какие части объектов будут отсечены как не попадающие в поле зрения.
Для задания матрицы проектирования сначала надо выполнить следующие команды: д1МаЬг1хМоае ( СЬ_РК<ХГЕСТ10М ); glLoadI.deiit.ity () ; Поле зрения при перспективном преобразовании является усеченной пирамидой (рис. 4.6).
Рис. 4,6
Для задания перспективного преобразования в OpenGL служит процедура
void glFrustrum ( GLdouble left, GLdouble right, GLdouble top, GLdouble bottom, GLdoubel near, GLdouble far ) ;
Смысл передаваемых параметров ясен из рисунка. Обратите внимание на то, что в момент применения матрицы проектирования координаты объектов уже переведены в систему координат камеры. Величины near и far должны быть неотрицательными.
При этом текущая матрица проектирования умножается на следующую матрицу"images/tmpFE1D-105.png">
Иногда для задания перспективного преобразования удобнее воспользоваться следующей процедурой из библиотеки утилит OpenGL (все функции этой библиотеки начинаются с префикса glu).