Последняя процедура в описываемой последовательности преобразует описания вершин в систему координат экрана (screen coordinates). Сформированная проекция объекта должна появиться на экране в заданном видовом окне (viewport). В OpenGL это преобразование выполняется уже после завершения процедуры проецирования и является, таким образом, двухмерным. В результате предыдущих преобразований зона видимости была нормализована таким образом, чтобы ее стороны соответствовали сторонам видового окна (рис. 7.4), поэтому преобразование выполняется довольно просто:


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

В литературе, особенно переводной, иногда для обозначения этой процедуры используется термин "кадрирование". -Прим. перев.
7.2. Реализация геометрических преобразований 293
7.3. Отсечение отрезков Модуль отсечения анализирует, какие примитивы или части примитивов будут включены в изображение. Примитивы, которые попадают внутрь зоны видимости, модуль отсечения пропускает дольше, а остальные отбрасывает. Возможен и третий вариант- примитив частично попадает в зону видимости. При обработке таких примитивов модуль отсечения разделяет их на части и пропускает дальше только ту из них, которая находится в зоне видимости.
В процессе конвейерной обработки процедура отсечения может выполняться поэтапно на разных стадиях. Например, модуль моделирования может взять на себя часть работы, сразу же отбросив те объекты, которые несомненно не попадут в зону видимости, и тем самым избавить остальные модули от лишних операций. Отсечение можно выполнять и после проективного преобразования, когда из трехмерного описания объектов будет сформировано двухмерное. В OpenGL можно выполнять отсечение на уровне трехмерной зоны видимости еше до того, как система приступит к проективному преобразованию. Ниже мы рассмотрим несколько алгоритмов отсечения. Начнем с двухмерных алгоритмов отсечения отрезков не только потому, чтобы отдать дань пионерам компьютерной графики, но и из педагогических соображений- поняв идею двухмерного отсечения, значительно проще разобраться и в трехмерных алгоритмах.