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

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

Хотя OpenGL предназначен для трехмерных приложений, существует двухмерная функция GLU, задающая стандартное прямоугольное отсекающее окно во внешних координатах. В OpenGL координаты отсекающего окна являются параметрами проективного преобразования. Следовательно, вначале необходимо вызвать режим матрицы проектирования. Затем можно задать поле просмотра, используя функции стандартной библиотеки OpenGL, и окно на экране, используя функции GLUT. Существует множество функций GLUT, позволяющих настраивать различные параметры окна на экране. В табл. 6.1 приведено резюме по функциям двухмерного наблюдения OpenGL. Кроме того, в таблице перечислены некоторые функции, связанные с наблюдением.

ТАБЛИЦА 6.1. Резюме по функциям OpenGL двухмерного наблюдения

Функция

Описание

glu0rtho2D

Задает координаты отсекающего окна как параметры двухмерной ортогональной проекции

glViewport

Задает параметры поля просмотра в экранных координатах

glGetlntegerv

Использует аргументы GL_VIEWPORT и vpArray для получения параметров текущего активного поля просмотра

glutlnit

Инициализирует библиотеку GLUT

glutInitWindowPosition

Задает координаты левого верхнего угла окна на экране

glutlnitWindowSize

Задает ширину и высоту окна на экране

glutCreateWindow

Создает окно на экране (которому присваивается целочисленный идентификатор) и задает название окна на экране

glutlnitDisplayMode

Выбирает параметры, такие как режим буферизации и цвета для окна на экране

glClearColor

Задает RGB-цвет фона окна на экране

glClearlndex

Задает фоновый цвет окна на экране с использованием режима индексации

glutDestroyWindow

Задает число - идентификатор удаляемого окна

glutSetWindow

Задает число - идентификатор текущего окна

glutPositionWindow

Обновляет положение на экране текущего окна

glutReshapeWindow

Обновляет ширину и высоту текущего окна на экране

glutFullScreen

Устанавливает размер текущего окна равным размеру экрана

glutReshapeFunc

Задает функцию, вызываемую при изменении размера окна

glutlconifyWindow

Превращает текущее окно в пиктограмму

glutSetlconTitle

Задает метку для пиктограммы окна

glutSetWindowTitle

Задает новое название текущего окна

Функция

Описание

glutPopWindow

Перемещает текущее окно “наверх”; т.е. ставит его перед всеми остальными окнами

glutPushWindow

Перемещает текущее окно “вниз”; т.е. располагает его позади всех остальных окон

glutShowWindow

Возвращает текущее окно на экран

glutCreateSubWindow

Создает окно второго уровня в данном окне

glutSetCursor

Определяет форму курсора экрана

glutDisplayFunc

Вызывает функцию создания изображения в текущем окне

glutPostRedisplay

Обновляет содержимое текущего окна

glutMainLoop

Выполняет программу компьютерной графики

glutldleFunc

Задает функцию, выполняемую, когда система не выполняет никаких действий

glutGet

Запрашивает систему о заданном параметре состояния

ЛИТЕРАТУРА

Алгоритмы отсечения линий обсуждаются в работах [73, 191, 231, 335]. Методы повышения скорости алгоритма отсечения линий Коэна-Сазерленда представлены в статье [86].


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