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