Загрузка...

Изображение отрезков.


Попробуем использовать адресацию буфера кадра, в качестве дисплея на ЗЭЛТ. Предварительно буфер кадра очищается, либо устанавливается в фоновую интенсивность (или цвет).
Вместо записи векторов прямо на экран дисплея для разложения в растр отрезка применим или алгоритм Брезенхема, или любой другой. Соответствующие пикселы будут записаны в буфер кадра. Когда процесс закончится (изображение помещено в буфер кадра), тогда дисплейный контроллер считает буфер кадра в порядке сканирования строк и выведет результат на экран.
Если необходимо выборочное стирание отрезка (редактирование), то это можно выполнить с помощью повторного использования алгоритма разложения в растр и записи соответствующих пикселов. Однако в случае, если один отрезок пересекает другой, то в месте контакта возникает обрыв. Обнаружение этой точки и заполнение недостающих пикселов нетрудно, однако занимает время (что плохо для сложных построений). Для уменьшения затрат применяют т.н. оболочечный или минимаксный тест (Рис.2). Суть заключается в том, чтобы определить точки пересечения тех отрезков, которые пересекают прямоугольную оболочку, диагональные вершины которого — проверяемый отрезок ab. Пример приведен в Лабораторной работе № 8.
Построение литер.
Литеры записываются в буфер с помощью маски. Маска — это маленький растр, содержащий относительные адреса пикселов, служащих для построения литеры. С помощью этого способа можно описать построение любого символа (резистора, конденсатора, математического знака). Маска содержит двоичные величины (0 или 1) для каждой точки, которые обозначают задействован пиксел или нет. Для цветных изображений применяют дополнительные биты (индексы) в таблице цветов.
Литеру можно вставить в буфер кадра, указав адрес (x0, y0) начала маски в буфере. Каждый пиксел в маске будет смещен на эти координаты, относительно центра координат. Вариант простого алгоритма приведен в Лабораторной работе № 8.
Стереть литеру можно, переписав ее с фоновой интенсивностью или цветом.

Загрузка...