Графические устройства

         

Произвольные линии



Произвольные линии

При рисовании произвольных линий, в отличие от гладких, вычисляется приращение адреса в каждой точке. В этом случае при перемещении от точки к точке значение одной координаты (х или Y) увеличивается на 1, а значение другой либо увеличивается на 1, либо остается неизменным. В результате на экране возникают ступеньки, размер и количество которых, при прочих равных условиях, зависят от угла наклона.

Рассмотрим, какие действия выполняют подпрограммы, предназначенные для рисования линии, проходящей через две заданные точки. При ее вызове задаются координаты двух крайних точек линии X1,Y1 и X2,Y2. Выполнение подпрограмм начинается с анализа значений координат. Если окажется, что > Х2, то производится перестановка значений координат в памяти так, чтобы Х2 > X1. Затем начало координат переносится в точку XI,YI, что позволит работать с приращениями адресов относительно этой точки. При выполнении дальнейших действий учитываются следующие величины:

Dx = Х2 - XI;
Dy = Y2 - Y1

хли DX = 0 или Dy = 0, то задана вертикальная или горизонтальная линия, оторая строится обычным способом, описанным в данной главе. В противном случае выбирается способ построения линии.

Если DX > оу, то линия строится относительно оси х. Это значит, что при эеходе от точки к точке приращение значения координаты х равно 1, приращение координаты Y равно DY/DX, причем о < оу/сх < 1.

Если Dх < Dy, то линия строится относительно оси Y. Это значит, что при еходе от точки к точке приращение значения координаты Y равно 1, а вращение координаты х равно DX/DV, причем о < Dx/Dy < 1.

При DX = Dy линия гладкая, например, с углом наклона 45 градусов, способ ее построения выбирается разработчиком.

Линия рисуется на экране последовательно точка за точкой, поэтому значение координат в любой точке равно сумме приращений их значений во всех предыдущих и в данной точке. В одних случаях эти суммы вычисляются явно, в других неявно, но без них линию нарисовать невозможно.

Значения одной координаты (х или Y) являются целыми числами и не требуют дополнительных преобразований. Значения другой координаты (Y или Х) могут иметь дробную часть, поэтому их надо преобразовать в целые числа. Описанные в литературе подпрограммы различаются, главным образом, способом вычисления ступенчатой функции, аппроксимирующей прямую, проходящую через две заданные точки. В простейшем случае при вычислении приращения адреса учитывается только целая часть числа, а при суммировании приращений — все число.

Приращения значений координат преобразуются в приращение адреса, и очередная точка выводится на экран. Знак приращения зависит от взаимного расположения крайних точек линии, поэтому в подпрограммах учитывается возможность как положительных, так и отрицательных приращений адресов.

Описание алгоритмов рисования линий и примеры подпрограмм, правда, предназначенных для работы в видеорежимах VGA, вы найдете в книге. Ее оригинал (на английском языке) распространялся на компакт-дисках вместе с текстами подпрограмм.

 



Содержание раздела