Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Проекции. Видовое преобразование

Видовое преобразование

Преобразование координат

В OpenGL каждая вершина задается четырьмя координатами, что связано с использованием однородных координат. В однородных координатах положение точки P (x, y, z) записывается как P (W × x, W× y, W×z, W).

Для преобразования координат используется матричное представление. В OpenGL существует три типа матриц – видовая, проекций и текстуры. Все они имеют размер 4 ×4. Для того, чтобы с какой-либо матрицей можно было работать ее нужно сделать текущей, для чего предусмотрена команда: void glMatrixMode(GLenum mode). Параметр mode определяет, с каким набором матриц будут выполняться последующие операции, и может принимать одно из следующих значений: GL_MODELVIEW (последовательность операций над матрицами применяется к видовой матрице), GL_PROJECTION (последовательность операций над матрицами применяется к матрице проекций), GL_TEXTURE (последовательность операций над матрицами применяется к матрице текстуры).

После того как установлена текущая матрица, необходимо определить ее значения. В данном случае полезной может оказаться функция void glLoadIdentity(), которая заменяет текущую матрицу на единичную.

Для формирования матрицы преобразований можно воспользоваться готовыми командами:

1. Вращение: void glRotate[f,d](GLtype angle, GLtype x, GLtype y, GLtype z). Эта команда рассчитывает матрицу для выполнения вращения вектора против часовой стрелки на угол, определяемый параметром angle, осуществляемого относительно точки (x, y, z). После выполнения этой команды все объекты изображаются повернутыми.

2. Параллельный перенос: void glTranslate[f,d](GLtype x, GLtype y, GLtype z). При помощи этой команды осуществляется перенос объекта на расстояние x по оси Х, на расстояние y по оси Y и на расстояние z по оси Z.

3. Масштабирование: void glScale[f,d](GLtype x, GLtype y, GLtype z). Осуществляет частичное масштабирование вдоль каждой из координатных осей на значения, определяемые соответствующими параметрами.

При использовании перечисленных команд видового преобразования OpenGL умножает текущую матрицу на соответствующую матрицу вращения, переноса или масштабирования и помещает результат на место текущей матрицы.

В OpenGL поддерживаются такие виды проекций как ортографическая и перспективная. Ортографическая (параллельная) проекция представляет пространство параллелепипедом и размер изображаемых фигур не зависит от расстояния, на котором они находятся. Объем отсечения для ортографической проекции представлен на рисунке 1.

 

Рисунок 1 - Объем отсечения ортографической проекции

Перспективная проекция моделирует пространство четырех угольной усеченной призмой и в ней удаленный объект кажется меньше, чем такой же, но расположенный ближе. Объем отсечения для перспективной проекции представлен на рисунке 2.

 

Рисунок 2 - Объем отсечения перспективной проекции

<== предыдущая лекция | следующая лекция ==>
Базовые возможности библиотеки | Использование таймера
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 737; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.