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 строит отрезок по координатам конечной его точки. 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
длина пунктира и интервала.