Кроме этого, внутри экранного окна (screen window) мы задаем прямоугольный порт просмотра (viewport)2. Преобразование (состоящее из масштабирования и сдвига) между мировым окном и пор1 Как уже отмечалось, слово «окно» («window») имеет в графике множество различных значений, что зачастую приводит к неразберихе. Мы будем стараться при необходимости подчеркивать различие смысла между словами «мировое окно», «экранное окно» И т. д.

2 В некоторых источниках переводится как «демонстрационное окно» или «окно вывода». - Примеч. пер.

Дополнительные инструменты для рисования

том просмотра организовано так, что при рисовании объектов внешнего мира те их части, которые находятся внутри мирового окна, автоматически преобразуются внутрь порта просмотра. Таким образом, программист мыслит в категориях «взгляда через окно» на изображаемые объекты и помещения «мгновенного снимка» всего того, что видно через это окно, в порт просмотра на дисплее. Данный подход «окно - порт просмотра» значительно упрощает такие вещи, как «увеличение» («zooming in») какой-либо детали в сцене или панорамирование («panning around») этой же сцены.

Вначале рассмотрим ту часть преобразования, которая обеспечивает автоматическое изменение координат. Затем мы увидим, как осуществляется отсечение.

3.2. Мировые окна и порты просмотра Покажем на примере целесообразность использования мировых окон и портов просмотра. Предположим, что вы хотите исследовать природу некоторой математической функции, например функции sine, хорошо известной в области обработки сигналов. Эта функция определяется формулой

. . . sin(juc) _ sinc(*) = -i--. (3.1) тис

Вы хотите узнать, как эта функция изгибается и извивается по мере изменения х. Предположим, вы знаете, что при изменении х от -«> до °° функция sinc(x) изменяется в пределах от -1 до 1 и что наиболее интересно поведение sinc(x) при значениях х в окрестностях нуля. Поэтому вы хотите, чтобы график имел центром точку (0, 0) и показывал функцию sinc(x) для значений X, плотно расположенных в промежутке от -4,0 до 4,0. На рис. 3.1 показан график функции sinc(x), созданный с помощью простой отображающей функции (display function) OpenGL (конечно, после того, как были заданы подходящие мировое окно и порт просмотра).


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