gIRotatef ((GLfloat) angle, 1.0, 0.0, 0.0 ); drawBox (-1.0, 1.0, -1.0, 1.0, -5.0, 5.0 );

Перед рисованием следующего блока начало локальной системы координат переносится из центра первого блока на 5 единиц в отрицательном направлении оси Oz. Это помещает центр локальной системы координат в конце первого члена руки -опорной точки для второго члена - точки, где первый и второй блоки сочленяются Затем локальная система координат поворачивается вокруг оси Ох и рисуется следующий блок:

gITranslatef (0.0, 0.0,-5.0);
gIRotatef (-(GLfloat) angle / 2.0, 1.0, 0.0, 0.0 );
drawBox (-1.0, 1.0,-1.0, 1.0,-10.0,0.0);

Команды для рисования третьего члена аналогичны: gITranslatef ( 0.0, 0.0, -5.0 ); gIRotatef (-(GLfloat) angle / 2.0, 1.0, 0.0, 0.0 ); drawBox (-1.0, 1.0, -1.0, 1.0, -10.0, 0.0 ); Для задания матрицы проектирования сначала надо выполнить следующие команды: gIMatrixMode (GL_PROJECTION ); gILoadldentity (); Преобразование проектирования определяет, как именно объекты будут проектироваться на экран и какие части объектов будут отсечены, как не попадающие в поле зрения.

Поле зрения при перспективном преобразовании является усеченной пирамидой (рис. 12.4).

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

2. Работа с библиотекой OpenGL

void gIFrustrum ( GLdoubie left, GLdoubie right, GLdouble bottom, GLdouble top, GLdoubie near, GLdoubie far);

Смысл передаваемых параметров ясен из рисунка. Обратите внимание на то, что в момент применения матрицы проектирования координаты объектов уже переведены в систему координат камеры. Величины near и far должны быть неотрицательными.

Соответствующая матрица преобразования имеет вид:

Иногда для задания перспективного преобразования удобнее воспользоваться следующей процедурой из библиотеки утилит OpenGL void gluPerspective ( GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar ); Эта процедура создает матрицу для задания симметричного поля зрения и умножает текущую матрицу на нее. Здесь fovy - угол зрения камеры в плоскости Oxz, лежащий в диапазоне [0,180]. Параметр aspect - отношение ширины области к ее высоте, zNear и zFar - расстояния вдоль отрицательною направления оси Oz, определяющие ближнюю и дальнюю плоскости отсечения.


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