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).

Для задания перспективного преобразования в OpenGL служит процедура

Рис. 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).


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