Рис. 4.3. Растровая прямая линия с тангенсом угла наклона |ш| > 1,0 и шириной линии 4, построенная с помощью горизонтальных полос пикселей Если тангенс угла наклона прямой линии превышает 1, широкие линии можно изображать с помощью горизонтальных полос, поочередно прибавляя пиксели справа и слева от траектории прямой. Эта схема показана на рис. 4.3, где прямолинейный отрезок с шириной 4 строится с помощью нескольких пикселей в каждой строке развертки. Аналогично широкую линию с тангенсом угла наклона, который меньше или равен 1,0, можно изобразить с помощью вертикальных полос пикселей. Чтобы реализовать эту процедуру, следует сравнить величины горизонтальных и вертикальных расстояний (Ах и А у) между концами отрезка прямой. Если | Дж| > |Ду|, то дополнительные пиксели изображаются в столбцах. В противном случае дополнительные пиксели изображаются в строках.
Несмотря на то что широкие линии можно быстро построить, откладывая вертикальные или горизонтальные полосы пикселей, ширина изображаемой линии (измеренная перпендикулярно к направлению прямой) зависит от тангенса угла ее наклона. Линия с углом наклона 45° будет в 1 / \/2 раз тоньше по сравнению с горизонтальной или вертикальной прямой, построенной с помощью полос пикселей такой же длины.
Еще одна проблема, связанная с выбором ширины с помощью горизонтальных или вертикальных полос пикселей, состоит в том, что этот метод дает линии, концы которых вертикальны или горизонтальны, независимо от угла наклона самой прямой. Это особенно заметно при использовании очень широких линий. Форму концов линий можно подправить, чтобы они выглядели лучше, прибавив к ним наконечники (рис. 4.4). Один из видов наконечников для прямой линии - это стыковое перекрытие, для которого характерны прямоугольные края, перпендикулярные к направлению прямой. Если тангенс угла наклона заданной прямой равен т, то тангенс угла наклона прямоугольных концов широкой линии будет -1/т. Тогда на каждом конце заданной прямой каждая из составляющих ее параллельных линий будет изображаться между двумя перпендикулярными линиями. Еще один наконечник прямой линии -
Рис. 4.4. Широкие линии, построенные с помощью стыковых перекрытий (панель а), овальных перекрытий (панель б) и проекционных прямоугольных перекрытий (панель е)
Рис. 4.5. Отрезки широких линий, соединенные с помощью углового соединения (панель а), скругленного соединения (панель б) и косого соединения (панель «)
это овальное перекрытие, которое получается путем прибавления закрашенного полукруга к каждому стыковому перекрытию. Центры этих полукругов находятся в середине широкой линии, а их диаметр равен ширине линии. Третий вид наконечников - это проекционное прямоугольное перекрытие. В этом случае прямая просто продолжается, и к ней прибавляются стыковые перекрытия, которые расположены на расстоянии половины ширины линии от заданных концов отрезка.
К числу других способов создания широких линий можно отнести изображение прямой линии в виде закрашенного прямоугольника или создание линии с помощью выбранной модели пера или кисти, что будет обсуждаться в следующем разделе. Чтобы получить описание границ прямой в виде прямоугольника, рассчитываются координаты вершин прямоугольника, находящихся на перпендикулярах к направлению прямой, чтобы координаты вершин прямоугольника были удалены от точки конца заданной прямой на расстояние, равное половине ширины прямой. Прямоугольная линия, полученная таким способом, выглядит так, как показано на рис. 4.4, а. К закрашенному прямоугольнику можно добавить овальные перекрытия или увеличить длину прямой таким образом, чтобы получились проекционные прямоугольные перекрытия.