Но так было не всегда. В системах с векторным способом вычерчивания дисплейный процессор получал сигнал указания от светового пера в тот момент, когда на экране физически вычерчивался выбранный объект, а потому селекция выполнялась по времени - достаточно было зафиксировать адрес объекта в дисплейном файле в момент получения прерывания от светового пера.

Одна из причин, усложняющих выполнение операции указания в современных системах, - конвейерный принцип обработки информации. Примитивы, определенные в пользовательской программе, затем проходят через несколько стадий преобразования, пока не будет сформировано их растровое разложение в буфере кадра. Хотя практически все преобразования обратимы в математическом смысле, эту обратимость сложно реализовать, поскольку преобразования выполняются аппаратно. Поэтому преобразование информации о положении на экране в информацию о графическом примитиве не может быть сведена к простейшим вычислениям. Кроме того, существует и проблема потенциальной неоднозначности такого преобразования (см. упр. 3.11 и 3.12).

Существуют два главных способа преодоления этих сложностей. Первый способ - се-лектирование объектов- предполагает настройку прямоугольника отсечения небольшого размера и видового окна так, что с их помощью можно отобрать то подмножество объектов, которые попадают в окрестность маркера устройства указания. Эти отобранные примитивы включаются в специальный список селекции (hit list), который далее анализируется прикладной программой.

Альтернативный подход - использовать при анализе прямоугольные оболочки объектов (bounding rectangles или exlents). Прямоугольная оболочка (или просто оболочка) - это наименьший прямоугольник со сторонами, параллельными осям координат, который может быть описан вокруг объекта. Отобрать среди оболочек всех объектов те, которые содержат точку, указанную пользователем, не так сложно. Если в прикладной программе используется достаточно простая структура данных для сопоставления объектов в локальных или мировых системах координат с их оболочками в системе координат окна, то выбор соответствующих объектов можно возложить на прикладную программу. Мы продемонстрируем этот подход на практике в программе, которая будет рассмотрена в следующем разделе.


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