Чтобы процесс наблюдения был независимым от требований устройств вывода, в графических системах описания объектов переводятся в нормированные координаты, и применяются процедуры отсечения. В одних системах используются нормированные координаты с диапазоном от 0 до 1, в других - с диапазоном от -1 до 1. В зависимости от используемой графической библиотеки поле просмотра определяется либо в нормированных, либо в экранных координатах после нормировки. На последнем этапе преобразования наблюдения содержимое поля просмотра передается в точки окна на экране дисплея.
Отсечение обычно выполняется в нормированных координатах. Это позволяет сократить вычисления, объединив вначале различные матрицы преобразования. Отметим, что процедуры отсечения имеют первостепенную важность в компьютерной графике. Они используются не только в преобразованиях наблюдения, но и в системах управления окнами, пакетах рисования для стирания участков картины, а также во множестве других приложений.
ОТСЕКАЮЩЕЕ ОКНО
Чтобы добиться определенного эффекта наблюдения в программе-приложении, можно разработать свое отсекающее окно с произвольными выбранными формой, размером и ориентацией. Например, в качестве отсекающего окна можно выбрать звездообразную форму или эллипс, а также фигуру со сплайновыми границами. В то же время, чтобы обрезать сцену с использованием вогнутого многоугольника или отсекающего окна с нелинейными границами, необходимо больше обработки, чем для обрезки с использованием прямоугольника. Чтобы определить, где объект пересекает окружность, нужно больше вычислений, чем при определении точки пересечения с прямой линией. Отметим также, что в простейшем случае края окна отсечения параллельны координатным осям. Поэтому графические пакеты в общем случае разрешают использовать только прямоугольное отсекающее окно, стороны которого идут ПО ОСЯМ X и у.
Если требуется, чтобы отсекающее окно имело какую-то другую форму, можно реализовать свои алгоритмы отсечения и преобразования координат. Кроме того, можно просто отредактировать изображение и получить определенную форму кадра изображения, вмещающего сцену. Например, можно обрезать края картины с помощью любого удобного шаблона, наложив многоугольники, закрашенные цветом фона. Таким образом можно генерировать любые граничные эффекты или даже создавать на изображении внутренние дыры.
Прямоугольные отсекающие окна стандартной ориентации легко определяются координатами двух противоположных углов. Если требуется получить повернутое изображение сцены, можно либо определить прямоугольное отсекающее окно в повернутой системе координат изображения, либо (что равнозначно) повернуть сцену во внешних координатах. Некоторые системы позволяют поворачивать двухмерный кадр наблюдения, но обычно отсекающее окно задается во внешних координатах.
Рис. 6.4. Повернутое отсекающее окно, определенное в координатах наблюдения ОТСЕКАЮЩЕЕ ОКНО В КООРДИНАТАХ НАБЛЮДЕНИЯ
Обычно при двухмерном преобразовании наблюдения во внешней системе координат задается система наблюдения. Данная система отсчета позволяет задавать прямоугольное отсекающее окно с любой выбранной ориентацией и положением, как показано на рис. 6.4. Чтобы получить проекцию сцены во внешних координатах, определяемую отсекающим окном, изображенным на рис. 6.4, нужно просто перевести описание сцены в координаты наблюдения. Хотя многие графические пакеты не имеют функций задания отсекающего окна в двухмерной системе координат наблюдения, при определении отсекаемой области трехмерной сцены данный подход является стандартным.