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

UptoLike

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

33
После отсечения и деления на w координаты z лежат в диапазоне значений от –1 до 1, соответствен-
но для ближней и дальней плоскостей отсечения. Команда glDepthRange определяет линейное отобра-
жение нормализованных z-координат из этого диапазона в оконные координаты.
Команду glViewPort часто используют в CAD системах для моделирования четырех видов проек-
тируемого объекта. Это можно реализовать, например, следующим образом: экран разбивается на четы-
ре части и каждая описывается командой glViewPort с соответствующими значениями параметров окна
вывода. После каждого такого описания необходимо настроить вид проекции и параметры камеры на-
блюдения. После чего, необходимо вывести сцену. И так четыре раза.
11 ПРОЕКЦИИ
В OpenGL командно реализованы общепринятые в компьютерной графике два вида проекций: ор-
тографическая (параллельная) и перспективная с одной главной точкой схода на оси z. Для реализации
других видов проекций необходимо использовать готовые матрицы проецирования.
11.1 Ортографическая проекция
Первый тип проекции (рис. 4) может быть задан командой
void glOrtho (GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
GLdouble zNear, GLdouble zFar)
Рис. 4 Усеченный объем видимости для случая ортографической
параллельной проекции
Команда glOrtho() создает матрицу параллельной проекции и усеченный объем видимости. Пара-
метры left и right задают координаты левой и правой вертикальной плоскости отсечения. Параметры
bottom и top определяют координаты верхней и нижней плоскости отсечения. Параметры zNear и zFar
задают расстояние от точки (0,0,0) до ближней и дальней плоскостей отсечения и могут быть положи-
тельными и отрицательными.
В процессе работы команды glOrtho() текущая матрица M умножается на матрицу, сформирован-
ную командой glOrtho(), и результат помещается на место матрицы М.
В библиотеке glu32.lib существует эквивалент команды glOrtho(left,right,botton,top, –1, 1):
void gluOrtho2D (GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top)
11.2 Перспективная проекция
Для задания перспективной проекции с одной главной точкой схода по оси z применяется команда
void glFrustum (GLdouble left, GLdouble right,
GLdouble bottom, GLdouble top,
GLdouble zNear, GLdouble zFar)
Направление
проецирования
Картинная
плоскость
Задняя секущая плоскость
Передняя
секущая
плоскость
zFa
r
zNea
r
left right
top
botton
x
y
z