Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Компьютерная графика.doc
Скачиваний:
44
Добавлен:
10.12.2018
Размер:
572.93 Кб
Скачать

4.6. Изображение литер

Алфавитно-цифровые символы (литеры) записываются в буфер кадра с помощью маски. Литерная маска – это маленький растр, содержащий относительные адреса пикселов, используемых для представления литеры. С помощью литерной маски также можно представить и специальные символы, специфичные в конкретной прикладной области, например, резисторы, конденсаторы или математические символы. Сама маска просто содержит двоичные величины, обозначающие, используется или нет конкретный пиксель в маске для представления формы буквы или символа (литеры). Для представления простых черно-белых изображений 1 обычно означает, что пиксель используется в представлении, а 0 - не используется. Для цветных изображений применяются дополнительные биты в качестве индексов в таблице цветов.

Литеру можно вставить в буфер кадра, указав адрес () начала маски в буфере. Каждый пиксель в маске смещается на величину .

Для создания литер различных шрифтов или ориентаций перед записью в буфер маску можно модифицировать (получить жирную литеру, повернуть, наклонить).

4.7. Растровая развертка сплошных областей и заполнение многоугольников

До сих пор речь шла о представлении на растровых графических устройствах отрезков прямых линий. Однако одной из важнейших характеристик такого устройства является возможность представления сплошных областей. Генерацию сплошных областей из простых описаний ребер или вершин будем называть растровой разверткой сплошных областей, заполнением многоугольников или заполнением контуров. Для этого можно использовать несколько методов, которые обычно делятся на две широкие категории:

  • растровая развертка;

  • затравочное заполнение.

В методах растровой развертки пытаются определить в порядке сканирования строк, лежит ли точка внутри многоугольника или контура.

В методах затравочного заполнения предполагается, что известна координата точки (затравка) внутри замкнутого контура. В алгоритме ищут точки соседние с затравкой и внутри контура. Если соседняя точка расположена не внутри, значит, обнаружена граница контура. Если же точка оказалась внутри контура, то она становится новой затравочной точкой и поиск продолжается.

Если контур состоит из кривых линий, то его можно аппроксимировать подходящим многоугольником или многоугольниками. Простейший метод заполнения многоугольника состоит в проверке на принадлежность внутренности многоугольника каждого пикселя в растре. Т.к. обычно большинство пикселов лежит вне многоугольника, то данный метод не слишком эффективен. Затраты можно уменьшить путем вычисления для каждого многоугольника прямоугольной оболочки – наименьшего прямоугольника, содержащего внутри себя многоугольник. Это намного сокращает число проверяемых пикселов.

Можно разработать более эффективный метод, чем тест на принадлежность внутренней части, если воспользоваться тем фактом, что соседние пиксели, вероятно, имеют одинаковые характеристики (кроме пикселей граничных ребер). Это свойство называется пространственной когерентностью.

Для растровых графических устройств соседние пиксели на сканирующей строке, вероятно, имеют одинаковые характеристики. Это когерентность растровых строк.

Характеристики пикселей на данной строке изменяются только там, где ребро многоугольника пересекает строку. Эти пересечения делят сканирующую строку на области.

Для простого многоугольника на рис. 7 строка 2 пересекает многоугольник при х=1 и х=8.

П олучаем 3 области:

x < 1 – вне многоугольника;