2. Процедуры машинной графики |
2.3. Алгоритмы отсечения текста
|
Текст можно отсечь одним из нескольких способов. Если каждую букву представлять в виде набора коротких отрезков прямых линий (штрихов), то можно выполнить операцию отсечения над каждым отрезком. Такой подход обеспечивает хорошие результаты (рис.2.5а), но он очень медленный и несовместим с обычными аппаратными генераторами букв. Можно считать буквы объектами, которые не делятся, и отсекать строку литер с точностью до буквы. Каждая буква условно заключается в прямоугольник. Некоторая точка этой ячейки – центр или один из углов – согласовывается с окном: если точка внутри, то буква вычерчивается. Можно согласовать с окном всю ячейку буквы или ее диагональ. Если ячейка или ее диагональ целиком входят в окно – литера вычерчивается, в противном случае – нет. На рис.2.5б,в показаны результаты роботы этих двух подходов: рис.2.5б – отсечение буквы по нижнему углу ячейки; рис.2.5в – отсечения по ячейке буквы. Отсечение по угловой точке и ячейке, диагонали дает одинаковый результат только тогда, когда ячейка не пересекается с окном. Более того, отсечение по ячейке буквы и отсечение по ее диагонали эквивалентные только тогда, когда стороны ячейки параллельные сторонам окна. При отсечении необходимо учитывать всю ячейку буквы (диагонали недостаточно). Третий,
наиболее
простой
подход к
отсечению
текста
состоит в
том, что вся
строка букв
считается
объектом,
который не
делится, и/или
весь
показывается,
или не
показывается
(рис.2.5г). При
этом
подходе
необходимо
согласовывать
с окном или
некоторую
точку
прямоугольника,
который
охватывает
строка, или
весь
прямоугольник.
Рис.
2.5. Различные
методы
отсечения
текста |
Контрольные
вопросы. |
1. Назовите основные подходы к отсечению текста.2. Когда
эквивалентны
отсечение
по ячейке
буквы и
отсечение
по ее
диагонали? 3. В чем состоят недостатки отсечения текста при векторном задании букв? |