ВУЗ:
Составители:
Рубрика:
Е. Ю. Ечкина, С. Б. Базаров, И. Н. Иновенков «Визуализация в научных исследованиях»
Кафедра АНИ факультета ВМК МГУ имени М. В. Ломоносова http://ani.cs.msu.su
50
где точка (eyex,eyey,eyez) определяет точку наблюдения, (centerx, centery, centerz)
задает центр сцены, который будет проектироваться в центр области вывода, а вектор
(upx,upy,upz ) задает положительное направление оси у, определяя поворот камеры.
Если, например, камеру не надо поворачивать, то задается значение (0,1,0), а со
значением (0,-1,0) сцена будет перевернута.
Фактически, эта команда совершает перенос и поворот объектов сцены, но в таком
виде задавать параметры бывает удобнее.
Проекции
В OpenGL существуют ортографическая (параллельная) и перспективная проекция.
Первый тип проекции может быть задан командами
void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top,
GLdouble near, GLdouble far)
void gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top)
Первая команда создает матрицу проекции в усеченный объем видимости
(параллелограмм видимости) в левосторонней системе координат. Параметры команды
задают точки (left, bottom, -near) и (right, top, -near), которые отвечают левому нижнему
и правому верхнему углам окна вывода. Параметры near и far задают расстояние до
ближней и дальней плоскостей отсечения по дальности от точки (0,0,0) и могут быть
отрицательными.
Во второй команде, в отличие от первой, значения near и far устанавливаются равными
–1 и 1 соответственно.
Перспективная проекция определяется командой
void gluPerspective(GLdouble angley, GLdouble aspect, GLdouble znear, GLdouble zfar)
которая задает усеченный конус видимости в левосторонней системе координат.
Параметр angley определяет угол видимости в градусах по оси у и должен находиться
в диапазоне от 0 до 180. Угол видимости вдоль оси x задается параметром aspect,
который обычно задается как отношение сторон области вывода. Параметры zfar и
znear задают расстояние от наблюдателя до плоскостей отсечения по глубине и
должны быть положительными. Чем больше отношение zfar/znear, тем хуже в буфере
глубины будут различаться расположенные рядом поверхности, так как по умолчанию
в него будет записываться ‘сжатая’ глубина в диапазоне от 0 до 1 (см. следующий
пункт).
Область вывода
После применения матрицы проекций на вход следующего преобразования подаются
так называемые усеченные (clip) координаты, для которых значения всех компонент
(x
c
, y
c
, z
c
, w
c
)
T
находятся в отрезке [-1,1]. После этого находятся нормализованные
координаты вершин по формуле:
(x
n
, y
n
, z
n
)
T
=(x
c
/w
c
, y
c
/w
c
, z
c
/w
c
)
T
Область вывода представляет из себя прямоугольник в оконной системе координат,
размеры которого задаются командой:
void glViewPort(GLint x, GLint y, GLint width, GLint height)
Значения всех параметров задаются в пикселах и определяют ширину и высоту
области вывода с координатами левого нижнего угла ( x,y ) в оконной системе
координат. Размеры оконной системы координат определяются текущими размерами
окна приложения, точка (0,0)находится в левом нижнем углу окна.
Е. Ю. Ечкина, С. Б. Базаров, И. Н. Иновенков «Визуализация в научных исследованиях» где точка (eyex,eyey,eyez) определяет точку наблюдения, (centerx, centery, centerz) задает центр сцены, который будет проектироваться в центр области вывода, а вектор (upx,upy,upz ) задает положительное направление оси у, определяя поворот камеры. Если, например, камеру не надо поворачивать, то задается значение (0,1,0), а со значением (0,-1,0) сцена будет перевернута. Фактически, эта команда совершает перенос и поворот объектов сцены, но в таком виде задавать параметры бывает удобнее. Проекции В OpenGL существуют ортографическая (параллельная) и перспективная проекция. Первый тип проекции может быть задан командами void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far) void gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top) Первая команда создает матрицу проекции в усеченный объем видимости (параллелограмм видимости) в левосторонней системе координат. Параметры команды задают точки (left, bottom, -near) и (right, top, -near), которые отвечают левому нижнему и правому верхнему углам окна вывода. Параметры near и far задают расстояние до ближней и дальней плоскостей отсечения по дальности от точки (0,0,0) и могут быть отрицательными. Во второй команде, в отличие от первой, значения near и far устанавливаются равными –1 и 1 соответственно. Перспективная проекция определяется командой void gluPerspective(GLdouble angley, GLdouble aspect, GLdouble znear, GLdouble zfar) которая задает усеченный конус видимости в левосторонней системе координат. Параметр angley определяет угол видимости в градусах по оси у и должен находиться в диапазоне от 0 до 180. Угол видимости вдоль оси x задается параметром aspect, который обычно задается как отношение сторон области вывода. Параметры zfar и znear задают расстояние от наблюдателя до плоскостей отсечения по глубине и должны быть положительными. Чем больше отношение zfar/znear, тем хуже в буфере глубины будут различаться расположенные рядом поверхности, так как по умолчанию в него будет записываться ‘сжатая’ глубина в диапазоне от 0 до 1 (см. следующий пункт). Область вывода После применения матрицы проекций на вход следующего преобразования подаются так называемые усеченные (clip) координаты, для которых значения всех компонент (xc, yc, zc, wc)T находятся в отрезке [-1,1]. После этого находятся нормализованные координаты вершин по формуле: (xn, yn, zn)T=(xc/wc, yc/wc, zc/wc)T Область вывода представляет из себя прямоугольник в оконной системе координат, размеры которого задаются командой: void glViewPort(GLint x, GLint y, GLint width, GLint height) Значения всех параметров задаются в пикселах и определяют ширину и высоту области вывода с координатами левого нижнего угла ( x,y ) в оконной системе координат. Размеры оконной системы координат определяются текущими размерами окна приложения, точка (0,0)находится в левом нижнем углу окна. Кафедра АНИ факультета ВМК МГУ имени М. В. Ломоносова http://ani.cs.msu.su 50
Страницы
- « первая
- ‹ предыдущая
- …
- 48
- 49
- 50
- 51
- 52
- …
- следующая ›
- последняя »