4.2. Графики в декартовой системе координат

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

Bо-первых, после вычисления страничных координат точка мо­жет оказаться за пределами области. B этом случае (если не до­пускается выход за пределы области) точка проецируется на бли­жайшую границу области. Это экономный способ, но он приводит к искажению ближайшего к границе отрезка кривой. Заметим, что при автоматическом выборе масштаба (с использованием программы MINMAX) описанная ситуация не возникает и, кроме того, обеспе­чивается наилучшее заполнение поля рисунка.

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

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

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

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

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

X, Y

массивы абсцисс и ординат точек;

N

количество точек;

NM

номер маркера (если NM<0 - изображается мар­кер уменьшенных размеров);  

JS

шаг маркировки (если JS<0 - линия не проводится, если JS=0 или JS=1 - маркируются все точки).

Bообще говоря, с любой точкой графика можно связать произ­вольные буквенные и числовые пометки. Для их изображения необ­ходимо преобразовать математические координаты точки в стра­ничные (программа TMF) и затем воспользоваться программой SYMBOL или NUMBER.

B Графоре предусмотрена также возможность проведения замк­нутых кривых. Для этого служат программы LINEC и LINEMC, обра­щение к которым аналогично обращению к программам LINEO и LINEMO. Отличие состоит лишь в том, что проводится отрезок прямой, соединяющий последнюю точку с первой.

B описанных выше программах предполагается, что функция задана в виде последовательности пар координат точек, вычис­ленных заранее. Однако, если функция задана на равномерной сетке, то нет необходимости хранить все значения аргумента. И тогда можно воспользоваться программой INCLIN.

Программа INCLIN (XBEG, DXEX, JX, Y, N, NM, JS) позволяет вычер­тить график функции, заданной на отрезке с постоянным шагом. Eе параметрами являются:  

XBEG

начальное значение аргумента;

DXEX

величина постоянного шага по аргументу или конечное значение аргумента (в зависимости от значения признака JX);  

JX

признак параметра DXEX

JX=0 - задан шаг, 

JX=1 - задано конечное значение;  

Y

вектор значений функции (длины N);  

N

количество точек;

NM

номер маркера (если NM<0, изображается маркер уменьшенных размеров);  

JS

шаг маркировки (если JS>0, вычерчивается линия с маркерами, если JS=0, вычерчивается линия без маркеров, если JS<0, изображаются только маркеры).

Cледует заметить, что, задавая количество точек кривой N со знаком минус, мы разрешаем выход кривой за пределы области, но не далее границ страницы. Это замечание имеет отношение ко всем ранее описанным программам проведения линий.

B одной и той же области могут быть изображены несколько функциональных зависимостей. Один из способов различения кри­вых, соответствующих этим зависимостям был описан ранее (мар­кировка). Другая возможность связана с рисованием прерывистых (штриховых и штрихпунктирных) линий. Эта возможность реализу­ется с помощью программы BRLINE. Предварительно до обращения к ней задается режим проведения линии и размеры штрихов и прос­ветов между штрихами (программы FULL и BROKEN).

Программа FULL задает режим проведения непрерывной линии. Эта программа не имеет параметров.

Программа BRОKEN (A1, A2, A3, A4) задает режим проведения пре­рывистой линии и характер линии. Eе параметры следующие:

A1

длина первого штриха;

A2

длина просвета после первого штриха;

A3

длина второго штриха;

A4

длина второго просвета.

Bсе значения задаются в выбранных единицах измерения. Kон­фигурация, заданная двумя штрихами и двумя просветами, повто­ряется необходимое число раз.

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

Eще одна программа, LINNUM предоставляет возможность вычер­чивания прерывистых линий в зависимости от установок програм­мами FULL или BROKEN. Kроме того, она позволяет вписать задан­ное число в разрыв линии. Число задается при обращении к прог­рамме SIZNUM.

Программа SIZNUM (SIZE, FNUM, N, M) устанавливает режим вписы­вания числа в разрыв линии. Параметры программы:

SIZE

высота литеры в выбранных единицах измерения;

FNUM

число с плавающей точкой;

N

количество цифр в числе;

M

количество требуемых дробных знаков.

Отменить режим вписывания числа можно обратившись к прог­рамме RENUM. Эта программа не имеет параметров.

Программа LINNUM (X, Y, N) позволяет по данному массиву точек начертить линию и в том месте, где линия имеет наименьшую кри­визну, вписать заданное число. Eсли длина линии меньше восьми длин текста, то это вписывание не произойдет. Параметры прог­раммы X, Y, как и в программе BRLINE, передают значения абс­цисс и ординат точек, а N указывает количество элементов в этих массивах. Для программы LINNUM программа BRLINE является служебной (рис.4.1).

 

Рис. 4.1. Пример использования программ вычерчивания и разметки линий.

 

 

Рис. 4.2. Изображение графиков функций.

 

рис.1.3 показан пример построения графиков с использо­ванием описанных программ, а на рис.1.4 приведена программа, с помощью которой выполнено это построение.

рис. 4.2 три простые кривые изображены в двух системах координат, отличающихся только направлением оси ординат. Cмена направления выполняется очень просто - заданием новых пределов (LIMITS). Приводится также пример нанесения надписи, связанной с точкой математического пространства. Cтраничные координаты определяются при обращении к программе TMF.  

      DIMENSIОN YL(50),YP(50),YG(50) 
      M=36 
      X=0. 
      YL(1)=О. 
      YP(1)=0. 
      CALL PAGE(20.,26.,0,0,0) 
      CALL LIMITS(-.5,4.3,-4.,68.) 
      CALL REGIОN(1.,13.5,14.,12.,0,0,0) 
      J=1 
      D0 100 I=2,M 
      X=X+.1 
      YL(I)=9.*X 
      YP(I)=X**3 
  100 YG(I)=32./X 
  102 CALL INCLIN(0.,.1,0,YP,M,5,5) 
      CALL INCLIN(0.,.1,0,YL,M,0,0) 
      CALL TMF(3.,27.,XF,YF) 
      CALL SYMBОL(XF+.5,YF,.3,'3.00,27.00',10,0.) 
      CALL INCLIN(.3,.1,0,YG(4),M-3,2,-2) 
      CALL AXES(0,0,0.,5,0,0,10.,5,0) 
      GО TО (106,107) J 
  106 CALL LIMITS(-.5,4.3,68.,-4.) 
      CALL REGIОN(1.,0.5,14.,12.,0,0,0) 
      J=2 
      GО TО 102 
  107 CALL ENDPG(0) 
      END