5.7. Резюме Аффинные преобразования являются главным элементом компьютерной графики, поскольку они являются универсальным средством управления графическими объектами в важнейших направлениях. Разработчику всегда требуется масштабировать, ориентировать и позиционировать объекты, чтобы скомпоновать сцену и получить ее вид с нужной точки. Аффинные преобразования позволяют достаточно легко осуществить все это программным способом.

Аффинные преобразования конвертируют один координатный фрейм в другой, и при использовании однородных координат аффинные преобразования выражаются в единой матричной форме. Последовательность таких преобразований может быть скомпонована в единое преобразование, матрица которого является произведением матриц отдельных преобразований. Важно, что аффинные преобразования сохраняют прямизну, так что образ прямой линии остается прямой линией, а образ плоскости - плоскостью. Такая инвариантность значительно упрощает работу с прямыми и плоскостями в программе: можно извлечь большую выгоду из простоты представления прямой (двумя конечными точками) и плоскости (тремя точками или четырьмя коэффициентами). Вдобавок сохраняется параллельность, так что параллелограммы отображаются в параллелограммы, а трехмерные параллелепипеды -

5.8. Тематические задания в параллелепипеды. Помимо этого, такая инвариантность упрощает визуализацию геометрических эффектов, производимых аффинными преобразованиями.

Трехмерные аффинные преобразования намного сложнее своего двумерного аналога, особенно когда нужно представить себе комбинацию поворотов. Заданный поворот можно рассматривать как три элементарных поворота на углы Эйлера, или как поворот вокруг некоторой оси, или просто как матрицу с некоторыми специальными свойствами (ее столбцы являются ортогональными единичными векторами). Часто бывает важно чередовать эти три формы представления поворотов.

OpenGL и другие графические пакеты предлагают мощные инструменты для применения преобразований и управления ими. В OpenGL все точки подвергаются лишь нескольким видам преобразований, и программист может использовать это обстоятельство при установке «камеры» и манипулировании ею, а также при задании размеров и расположения различных объектов на сцене. Два вида матриц, используемых в OpenGL (матрицы преобразований моделирования-вида и порта просмотра), задают аффинные преобразования, в то время как проекционная матрица обычно задает перспективное преоб-'разование, которое будет подробно изучаться в главе 7. OpenGL также поддерживает стек преобразований, упрощающий контроль за положением одного объекта относительно другого, и создание объектов, составленных из нескольких похожих частей.


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