10.4. Рисование прямых своими силами: алгоритм Брезенхема в котором рисуются отрезки ломаной, а этот порядок может оказаться важным, когда эти отрезки рисуются штриховыми или пунктирными линиями.
Прямые с наклоном, большим единицы. В этом случае х и у просто меняются местами, делаются шаги по у от ау до Ь и производится такая же проверка ситуаций, когда нужно увеличивать (более медленно изменяющееся) х.
Прямые с отрицательными наклонами. Если наклон используемой нами прямой лежит в диапазоне от 0 до -1, то Я автоматически приобретает нужный знак. Мы двигаемся по х с использованием тех же тестов, однако вместо увеличения зависимой переменной уменьшаем ее. Если же наклон меньше -1 («более отрицателен»), то заменяем 17на -"/и меняем местамих и у, как в том случае, когда наклон превышает единицу.
Горизонтальные и вертикальные прямые. Эти случаи встречаются в графике столь часто, что их проверка (например, посредством кода ттЧа.х =* Ь.х)…) и использование для них упрощенного алгоритма может ускорить выполнение подпрограммы. Для вертикальной прямой изменения были бы незначительными; большая часть времени, во всяком случае, тратится на выполнение процедуры setPixel О. Что касается горизонтальной прямой, то здесь можно использовать подпрограмму, которая рисует сразу много бит вдоль строки развертки, что значительно ускоряет процесс рисования. (Для изучения реализации вышеприведенных обобщений следует обратиться к упражнениям.)
Сводка свойств, которыми должна обладать рисуемая линия Какими свойствами должна обладать линия, рисуемая с помощью нашего алгоритма? Во-первых, она должна быть настолько прямой, насколько возможно, и должна обязательно проходить через обе заданные концевые точки. Во-вторых, линия должна быть «гладкой» и обладать одинаковой яркостью по всей длине. (Прямые с различными наклонами должны иметь одну и ту же яркость.) В-третьих, при рисовании линии должна быть обеспечена повторяемость: если мы позднее применим данный алгоритм к тем же самым данным, задающим концевые точки, то он должен включать и выключать в точности те же пикселы, что и в первый раз. Это существенно в случае стирания линии, которое выполняется посредством перерисовки ее цветом фона или в режиме Х(Ж-рисования. Наконец, не должно иметь значения, в каком направлении рисуется линия: при рисовании от точки (Ьх, & ) к точке (ах, ау) должны быть включены те же самые пикселы, что и при рисовании от (ах, ау) к (Ьх, Ьу). Если это условие соблюдается, то приложение может стирать ранее нарисованную линию вне зависимости от того, как она была нарисована.