
- •Слайд 3 –Системы координат
- •Слайд 4–Системы координат
- •Слайд 5–Аффинная система координат
- •Слайд 6–Полярная система координат
- •Слайд 7–Цилиндрическая система координат
- •Слайд 8–Сферическая система координат
- •Слайд 9–Однородная система координат
- •Слайд 11 – Система координат OpenGl
- •Слайд 12 – Параллельная проекция
- •Слайд 13 – Перспективная проекция
- •Void glFrustum(gLdouble left, gLdouble right, gLdouble bottom, gLdouble top, gLdouble near, gLdouble far);
- •Void gluPerspective(gLdouble fovy, gLdouble aspect, gLdouble near, gLdouble far);
Слайд 12 – Параллельная проекция
При ортографической проекции объём пространства, который визуализируется представляет собой параллелепипед:
Особенностями ортографической проекции является то, что расстояние от камеры до объектов не влияет на итоговое изображение.
Для установки и последующего изменения матрицы проекций следует выполнить функцию glMatrixMode(GL_PROJECTION). Для начала также следует отменить все предыдущие установки и преобразования, сделав матрицу проекций единичной с помошью функции glLoadIdentity(). Матрица ортографической проекции устанавливается с использованием функции, которая имеет следующий прототип:
void glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);
(left, bottom, -near) и (right, top, -near) -- точки, определяющие ближнюю отсекающую рамку. (left, bottom, -far) и (right, top, -far) -- точки, определяющие дальнюю отсекающую рамку. После применения этой команды направление проецирования параллельно оси z в сторону отрицательных значений.
Специально для двумерной визуализации можно использовать функцию, которая имеет следующий прототип:
void gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
Эта функция аналогична glOrtho(), при вызове которой аргумент near=-1.0, а far=1.0. В процессе двумерной визуализации z-координата у вершин имеет значение 0, то есть объекты находятся на средней плоскости.
Слайд 13 – Перспективная проекция
При перспективной проекции используется тот факт, что для человеческий глаз работает с предметом дальнего типа, размеры которого имеют угловые размеры. Чем дальше объект, тем меньше он нам кажется. Таким образом, объём пространства, который визуализируется представляет собой пирамиду.
Матрица преспективной проекции определяется с использованием функции:
Void glFrustum(gLdouble left, gLdouble right, gLdouble bottom, gLdouble top, gLdouble near, gLdouble far);
(left, bottom, -near) и (right, top, -near) определяют координаты ближней отсекающей рамки; near и far имеют всегда положительные значения и определяют расстояние от точки зрения до ближней и дальней отсекающих рамок.
Для задания матрицы перспективной проекции также можно использовать функцию gluPerspective(), которая имеет другие аргументы
Void gluPerspective(gLdouble fovy, gLdouble aspect, gLdouble near, gLdouble far);
Аргумент fovy (field of view) определяет поле зрения, а aspect -- отношение ширины отсекающей рамки к высоте. near и far имеют всегда положительные значения и определяют расстояние от точки зрения до ближней и дальней отсекающих рамок.
Перспективное проецирование обычно используется в играх и приложениях, где требуется добиться высокой реалистичности объектов, подожей на визуализацию глазом. Для двумерной и трехмерной визуализации научных и технических данных обычно используется ортографическая проекция.