Рис. 4.10. Дуга окружности с шириной 4, построенная с помощью вертикальных либо горизонтальных полос пикселей в зависимости от угла наклона кривой
Рис. 4.11. Дуга окружности с шириной 4 и радиусом 16, построенная путем закрашивания области между двумя концентрическими дугами границы. Исходное положение кривой можно сохранить, задав две границы кривой на расстоянии, равном половине ширины этой кривой, в каждую сторону от заданной траектории кривой. Пример такого подхода для фрагмента окружности с радиусом 16 и шириной 4 показан на рис. 4.11. В данном случае дуги-границы задаются на расстоянии 2 по обе стороны от окружности радиуса 16. Чтобы сохранить нужные размеры дуги окружности (см. раздел 3.13), можно задать радиусы концентрических дуг-границ как г = 14 и г = 17. Хотя данный метод позволяет точно изобразить широкие окружности, площадь других широких кривых в общем случае он передает только приблизительно. Например, фокусы внешней и внутренней границ широкого эллипса, построенного таким способом, не совпадают.
Пиксельные маски, которые применяются для реализации прямых линий, можно использовать и в растровых алгоритмах для построения кривых и создавать с их помощью штрихованные или пунктирные узоры. Например, маска 11100 дает пунктирную окружность, показанную на рис. 4.12. Используя свойства симметрии, можно
Рис. 4.12. Пунктирная дуга окружности, изображенная с помощью полос длиной 3 пикселя с расстоянием между штрихами 2 пикселя построить штрихи в различных октантах, но для сохранения правильной последовательности штрихов и промежутков между ними при переходе от одного октанта к следующему нужно будет смещать положения пикселей. Кроме того, в алгоритмах построения прямолинейных отрезков с помощью пиксельных масок изображают штрихи и промежутки между ними, имеющие различную длину вне зависимости от наклона кривой. Если требуется изобразить штрихи одинаковой длины, нужно при перемещении по окружности подбирать количество пикселей в каждом штрихе. Чтобы получить штрихи одинаковой длины, не применяя пиксельную маску с равными полосами, можно наносить пиксели через одинаковые угловые расстояния.
Изображение кривых с помощью пера (или кисти) выполняется с помощью тех же методов, что используются для прямолинейных отрезков. Форма пера повторяется на всей траектории кривой, как показано на рис. 4.13 для дуги окружности в первом квадранте. Здесь центр прямоугольного пера перемещается в последующие положения на кривой, при этом получается показанная на рисунке кривая. Построенные таким образом кривые будут шире в тех местах, где величина тангенса угла наклона кривой равна 1. Кривую однородной ширины можно изобразить, поворачивая прямоугольное перо таким образом, чтобы оно совпадало с направлением кривой при перемещении по ней, или используя перо круглой формы. Кривые, изображаемые с помощью перьев и кистей различной формы, могут иметь разный размер, и имитировать мазки кисти, также на них можно накладывать узоры.
Программы рисования и черчения позволяют создавать рисунки в интерактивном режиме с помощью таких устройств-указателей, позволяющих изображать кривые различной формы, как перо и графический планшет. Несколько примеров узоров из таких кривых показано на рис. 4.14. Дополнительной опцией узора, предлагаемой в пакетах рисования, является имитация мазков кисти. На рис. 4.15 показано несколько узоров, которые можно получить, моделируя различные виды мазков кисти.