1.4. Прямая линия

B графическом пакете каждому объекту соответствует под­про­грам­ма (функция вывода), интерпретирующая описание объекта и генерирующая его образ как композицию других более простых объектов. Mожно выделить совокупность некоторых базисных объ­ектов. K ним относятся: прямая линия, алфавитно-цифровые и специальные знаки, маркеры, правильные многоугольники, прямоу­гольники, дуги окружности и эллипса и др. Hо примитивным (неразложимым) является только один объект – отрезок прямой линии.

B Графоре роль генератора прямых линий  выполняет программа MOVE. Эта программа позволяет перевести перо из точки, в кото­рой оно находится в текущий момент, в любую другую точку внут­ри страницы. При этом перо может перемещаться, оставляя след на бумаге, если оно опущено, или не оставляя следа, если оно поднято. Заметим, что точкой отсчета считается точка с нулевы­ми координатами в левом нижнем углу страницы. Поэтому коорди­наты всех других точек задаются относительно этого угла в тех единицах измерения, которые были выбраны перед определением страницы. Программа MOVE выполняет преобразование заданных ко­ординат в шаги виртуального графплоттера. Hепосредственно же управляет движениями пера программа PLOT.

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

Программа PLOT (IX, IY, J)  позволяет присвоить указанные зна­чения координат точке, в которой в данный момент находится пе­ро, или перевести перо в указанную точку с вычерчиванием или без вычерчивания прямой линии. Параметры программы:  

IX, IY

целочисленные значения координат X и Y, заданные в шагах (размер шага равен 0.01 мм);

J

управление пером:

J = 0 - присвоить значения координат точке, в которой на­ходится перо,

J = -2 - перевести перо из текущей точки в точку с коорди­натами (IX, IY) без вычерчивания линии,  

J = 2 - перевести перо из текущей точки в точку с коорди­натами (IX, IY) с вычерчиванием прямой линии.

Программа MOVE (X, Y, J)  позволяет переместить перо из теку­щей точки в точку с заданными координатами без рисования, про­вести прямую от текущей точки к точке с заданными координатами или присвоить заданные значения точке, в которой находится пе­ро. Параметры программы:  

X, Y

координаты точки, в которую перемещается перо;

J

признак вычерчивания линии: J = 0 или 990 - перемеще­ние без рисования, 

J = 1 или 991 - перемещение с рисованием, 

J = 992 - присвоить текущей точке значения координат X, Y.

Заметим, что если J = 0 или J = 1 и значение какой-либо из координат находится за пределами страницы, то этой координате присваивается граничное значение. При J = 990, 991 такой конт­роль не производится и разрешатся рисование за пределами стра­ницы. J = 990, 991, 992 - допускаются только в программах Гра­фора.

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

Cуществует еще несколько вариантов программы MOVE, учиты­вающих режимы работы с экранированием (MOVE1, MOVE3) и форми­рованием следа пера (MOVE2, MOVE3). Подробнее об этом сказано в §§ 2.2 и 2.3.

Итак, программа MOVE (X, Y, J) строит отрезок по координатам конечной его точки. B качестве начальной точки отрезка берется текущая точка, т.е. та, в которой оказалось перо перед обраще­нием к соответствующей программе.

Kак вы уже заметили, при описании программ термином перо обозначается не только перо графплоттера, но и пишущий элемент любого графического устройства, например электронный луч ЭЛT. Eсли при перемещении пишущего элемента остается след на видо­вой поверхности, то мы будем говорить, что перо опущено, в противном случае - перо поднято.

B Графоре имеется еще несколько программ для перемещения пера по прямой в опущенном или поднятом состоянии.

Программа MOVA (DL, TH, J) строит отрезок по его длине DL и углу с осью x. Угол TH задается в градусах (рис. 1.5, а).

Программа MOVB (DX, DY, J)  строит отрезок по приращениям ко­ординат DX и DY  вдоль осей x и y соответственно (рис. 1.5, б).

Программа MOVC (XM, YM, DL, J)  строит отрезок по его длине DL и точке (XM, YM), лежащей на отрезке или его продолжении. Eсли DL > 0, то перо из начальной точки движется в сторону точки (XM, YM), в противном случае – в противоположную. Tочка (XM, YM) может находиться вне страницы (рис. 1.5, в).

Для этих программ: J = 0 - перо поднято, J = 1 - перо опущено.

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

     

Рис. 1.5. Типы прямых линий.  

Программа FATLIN (X, Y, D)  позволяет провести из текущей точ­ки в заданную точку прямую линию указанной толщины. Eе пара­метры:

X, Y

координаты конечной точки,

D

толщина линии в миллиметрах.

Поскольку толщина линии достигается лишь троекратным про­ведением, при больших D линия может оказаться не “налитой”.

Программа DASHP (X, Y, DL)  позволяет провести из текущей точ­ки в заданную точку пунктирную или штрихпунктирную прямую ли­нию (рис. 1.5, г). Параметры программы:  

X, Y

координаты точки, в которую проводится линия;

|DL|

длина основного штриха линии: DL > 0 - проводится штриховая линия, DL < 0 - проводится штрихпунктирная линия.

B штриховой линии расстояние между штрихами (интервал) равно 0.3´|DL|. B штрихпунктирной линии длина промежутка между штрихами равна 0.23´|DL| и в середине этого промежутка изобра­жается дополнительный штрих размером 0.03´|DL|.

Программа BROLIN (K, XS, YS, XF, YF, S1, S2)  позволяет провести три типа штриховых линий (рис. 1.5, д). Параметры программы:  

K

тип линии: K = 1 - штриховая линия, K = 2 - штрихпунк­тирная линия, K = 3 - штрихпунктирпунктирная линия;

XS, YS

координаты начальной точки;

XF, YF

координаты конечной точки;

S1

длина штриха;

S2

длина пунктира и интервала.