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 рисунках и технических чертежах используются, как правило, различные типы линий: сплошные, штриховые, штрихпунктирные, линии различной толщины. Программы для построения таких линий также описаны в этом разделе.
Программа 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
- длина пунктира и интервала.