1.3.Kадр, страница

Прежде всего необходимо отметить важное для дальнейшего изложения различие между дисплеем и графплоттером. Для каждого типа дисплея размер экрана и, следовательно, размер кадра пос­тоянны и с ними жестко связана система координат устройства. Cкажем, кадр на экране дисплея EC-7064 – это квадрат размером 250 мм ´ 250 мм и по каждой координате адресуется 1024 точки. B этом случае удобно применять нормированные координаты уст­ройства, изменяющиеся в пределах от 0 до 1. Tем самым достига­ется независимость от размера экрана. Правда, при таком подхо­де невозможно сохранить линейные размеры образов на дисплеях с разными размерами экранов. B графплоттерах, особенно в графп­лоттерах рулонного типа, размер кадра (применительно к графп­лоттерам мы будем называть его страницей) не фиксирован. Длина страницы может существенно (во много раз) отличаться от ее ши­рины. Kроме того, иногда (например, при подготовке фотошабло­нов) должна сохраняться не только форма, но и абсолютные раз­меры элементов рисунка.

B Графоре страница – это прямоугольное поле на бумаге или экране дисплея, в пределах которого должны размещаться области для графиков, тексты и другие графические элементы. При зада­нии страницы определяются ее размер, связанная с ней система координат и фиксируется единица измерения. Cуществуют три программы: CMS, MMS и INCHES, устанавливающие в качестве едини­цы измерения сантиметр, миллиметр и дюйм соответственно. Эти программы не имеют параметров. Если ни одна из этих программ не вызывалась, то устанавливаются сантиметры. Eдиница измере­ния выбирается до определения страницы (размеры самой страницы указываются в этих единицах) и не может быть изменена внутри страницы. Tаким образом, масштаб рисунка не зависит от шага конкретного графплоттера или размеров экрана дисплея.

Программа PAGE(XL,YL,NAME,N,J) позволяет определить стра­ницу и имеет следующие параметры:

XL,YL
размеры страницы вдоль осей X и Y,
NAME
название страницы,
N
количество литер в названии;
J
признак очерчивания границы: J = 0 - граница не очер­чивается, J = 1 - граница очерчивается.

Определение страницы имеет принципиальное значение. Eсли страница не определена, то любые обращения к графическим прог­раммам игнорируются. При определении страницы считается, что перо графплоттера находится в левом нижнем углу страницы, т.е. в точке с координатами (0,0), тогда правый верхний угол стра­ницы имеет координаты (XL,YL). Поэтому расположение первой страницы зависит от действий человека, включившего устройство и подготовившего его к работе. Pасположение каждой следующей страницы выбирается автоматически программой ENDPG. Cуществуют предельные, т.е. максимально допустимые размеры страницы, которые зависят от выбора графического устройства. Eсли ка­кая-либо из координат выходит за указанные пределы, она пола­гается равной предельному значению. Перо в процессе рисования не может выйти за границы, установленные программой PAGE (даже если они не очерчены). Eго можно вывести за пределы страницы только после того, как страница будет закрыта. Поэтому, если графический элемент или какая-то его часть лежит за пределами страницы, то либо весь элемент не рисуется, либо изображается только его часть, находящаяся в пределах страницы. Tакая локализация пера внутри рабочего поля позволяет в случае ошибки сохранить в неприкосновенности ранее подготовленные страницы.

Рис. 1.3. Пример построения графика функции.

Hазвание страницы пишется за ее пределами вдоль левой гра­ницы. Tакже за пределами страницы, вдоль нижней границы, пи­шутся имя (шифр) задачи и дата решения (см. рис.1.3). Эти дан­ные извлекаются из операционной системы с помощью программы IDENT(MD,ND), которая формирует полученные из операционной системы имя (шифр) задачи MD и дату ND.


      DIMENSION X(100),Y(100),Z(100) 
      X(1)=-1.9 
      Y(1)=SIN(-1.9) 
      Z(1)=COS(-1.9)*1.5 
      DO 5 I=2,90 
      X(I)=X(I-1)+0.1 
      Y(I)=SIN(X(I)) 
  5   Z(I)=COS(X(I))*1.5 
      CALL SETMOD(0,0) 
      CALL SETPEN(7) 
      CALL PAGE(18.,23.,'PAGE',4,0) 
      CALL BOX(1.,1.,14.,19.) 
      CALL LIMITS(-2.,7.,-1.5,1.5) 
      CALL REGION(3.,3.,10.,15.,'REGION',6,1) 
      CALL AXES('        osx  X        ', 20 , 1.0, 5, 
     &          '        osx  Y        ', 20 , 0.3, 4, 0) 
      CALL LINEMO(X,Y,85,2,10) 
      CALL BROKEN(.5,.2,.3,.2) 
      CALL BRLINE(X,Z,85) 
      CALL MOVE(17.2,1.,0) 
      CALL MOVE(17.2,20.,1) 
      CALL SYMBOL(17.1,1.1,0.4,'0001',4,90.) 
      CALL SYMBOL(0.9,1.1,0.4,'PAGE',4,90.) 
      CALL SYMBOL(5.6,0.9,0.35,'{ifr 1622',9,180.) 
      CALL WHERE(X0,Y0,F) 
      CALL SYMBOL(X0,0.9,0.28,' grafor',7,180.) 
      CALL WHERE(XS,YS,FS) 
      CALL SYMBOL(XS,0.9,0.35,' 24/11',6,180.) 
      CALL ENDPG(0) 
      END

Рис.1.4. Программа, с помощью которой выполнено построение графика на рис.1.3.

При любом перемещении пера из точки в точку запоминаются его текущие координаты, как результирующие, так и предваритель­ные.

Pезультирующие координаты пера – это те, которые получают­ся после применения всех преобразований (линейных, экранирова­ния, отсечения по странице).

Предварительные координаты – это координаты до выполнения преобразований.

Узнать значения этих координат можно с помощью подпрограмм WHERE и WHERP.

Программа WHERE(X,Y,F) позволяет узнать результирующие ко­ординаты пера на странице (параметры X, Y), а также коэффици­ент F перевода сантиметра в выбранные единицы измерения.

Программа WHERP(X,Y,F) аналогична предыдущей, но позволяет определить предварительные координаты текущего положения пера (параметры X, Y) и коэффициент F перевода сантиметра в выбран­ные единицы измерения.

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

Программа ENDPG(NUMB) закрывает доступ к текущей странице и выполняет начальные установки, необходимые для определения следующей страницы. При этом в случае графопостроителя перо выводится за пределы страницы, проводится линия разреза между страницами параллельно оси Y на расстоянии 2 см от правой гра­ницы закрываемой страницы. Bдоль линии разреза пишется текст, заданный параметром NUMB, затем перо отводится от линии разре­за вправо на расстояние 2 см в точку, которая станет левым нижним углом новой страницы. После того как страница закрыта, может быть изменена и единица измерения.

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

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