PROCEDURE oci;{ оси координат строятся только в пределах заданной области}
Var xg0, yg0:integer;
Begin XG0:=left - round( kx*X_min);
YG0:=down + round( ky*Y_min);
if X_MIN*X_MAX <=0 then line(XG0, up, XG0, down);
if Y_MIN*Y_MAX <=0 then line(LEFT, YG0, RIGHT, YG0);
End;
PROCEDURE Lineto_G;{рисование линии из текущей позиции курсора}
Var xg1, yg1:integer;{т. 1 - конец линии}
Begin
xg1:= left + Round(kx*(x1- X_min));
yg1:= down - Round(ky*(y1- Y_min)); lineto(xg1, yg1);
End;
BEGIN
END.
Приведенное описание размещения графика в прямоугольной области экрана позволяет: выводить кривые по точкам с отрицательными значениями координат, масштабировать график (сжимать/растягивать), изменять цвет фона внутри прямоугольника, задаваемого процедурой Bar(left, up, right, down).
Доработать методику для совместного построения нескольких графиков несложно. Необходимо для всех функций определить дискретные координаты y[i] и найти наибольшее и наименьшее значения для всех функций в заданных диапазонах изменения аргументов. Наибольшим значениям присвоить Y_MAX и X_MAX, а наименьшим - Y_MIN и X_MIN. Затем определить область для построения графика и координаты точек кривых. Кривые для разных функций желательно рисовать разным цветом с указанием вида функции.