В число других геометрических преобразований входят отражения и сдвиги. Отражения - это преобразования, которые поворачивают объект на 180° вокруг оси отражения. В результате получается зеркальное изображение объекта относительно данной оси. Если ось отражения перпендикулярна плоскости ху, отражение получается как поворот в плоскости ху. Если ось отражения лежит в плоскости ху, отражение получается как поворот в плоскости, перпендикулярной плоскости ху. Преобразования сдвига искажают форму объекта, смещая одну или несколько координат на величину, пропорциональную расстоянию от опорной линии сдвига.

Переходы между декартовыми системами координат выполняются с помощью последовательности преобразований трансляций-поворотов, согласовывающих две системы. Начало координат и векторы осей одной системы координат задаются относительно исходной системы координат В двухмерных системах один вектор полностью определяет направления координатных осей. Однако в трехмерных системах нужно задать два из трех направлений осей. Перенос описаний объектов из исходной системы координат во вторую систему рассчитывается как матричное произведение трансляции, переводящей новое начало координат в старое, и поворота, совмещающего два набора осей. Чтобы найти поворот, выравнивающий две системы координат, можно использовать ортонормированный набор векторов осей новой системы.

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

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

Стандартная библиотека OpenGL содержит три функции трансляции, поворота и масштабирования точек. Каждая функция генерирует матрицу, которая множится слева на матрицу модельной проекции. Таким образом, последовательность функций геометрических преобразований нужно задавать в обратном порядке: последнее вызванное преобразование является первым, которым воздействуют на точки. Матрицы преобразования воздействуют на позднее определенные объекты. Матрица модельной проекции формируется не только с помощью накопления последовательности преобразований, ее можно положить равной единичной или любой другой матрице. Кроме того, можно получить произведения матрицы модельной проекции и любой ' заданной матрицы. Все матрицы записываются в стеки, и в OpenGL поддерживается четыре стека, соотнесенных с различными типами преобразований, используемыми в графических приложениях. Чтобы определить текущий размер стека или максимальную глубину стека, можно использовать функцию запроса OpenGL. Существуют также процедуры обработки стеков: одна для копирования верхней матрицы стека во вторую позицию, другая - для удаления верхней матрицы. В OpenGL также есть несколько операций выполнения растровых преобразований. С помощью этих операций блок пикселей можно транслировать, повернуть, масштабировать или отразить.


⇐ вернуться назад | | далее ⇒