Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по информатике.DOC
Скачиваний:
29
Добавлен:
02.05.2014
Размер:
1.68 Mб
Скачать

0  Left, right  GetMaxX

YG 0 up, down GetMaxY

Алгоритм построения графика функции Y=F(x).

1). Определяем массивы значений аргумента и функции: x[i], Y[i]=F(x[i]), где i= 1. . . N. При равномерном разбиении интервала [A. . B] массивы можно задавать операторами:

Dx:= (B-A)/(N-1); { шаг разбиения по "х" }

for i:= 1 to N do begin

x[i]:= A + round(Dx*(i-1)); Y[i]:= F(x[i]) end;

2). Определяем наибольшее (Y_MAX) и наименьшее (Y_MIN) значения функции в заданном интервале изменения аргумента:

Y_MAX:= Y[1]; Y_MIN:= Y[1];

for i:= 1 to N do begin

IF Y_MAX < Y[i] THEN Y_MAX:= Y[i];

IF Y_MIN > Y[i] THEN Y_MIN:= Y[i] end;

112

В случае явного задания функции, для аргумента "х" имеем наибольшее значение X_MAX:= B и наименьшее значение X_MIN:= A.

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

3). Определяем коэффициенты масштабирования при построении графика в заданной области экрана:

Kx:= (right-left)/(X_MAX - X_MIN);

Ky:= (down - up )/(Y_MAX - Y_MIN);

Если параметры функции "х" и "y" имеют одинаковую размерность или оба безразмерны, то может появиться искажение естественной формы кривой вследствие разного масштабирования по осям координат: чрезмерное растяжение/сжатие по одной из осей. Например, при рисовании по точкам вместо окружности будет нарисован эллипс. Кроме этого следует учитывать искажение формы графика, регулируемое параметрами процедуры GetAspectRatio(xx, yy). Для вывода графика без искажения формы кривой следует переназначить координаты области экрана так, чтобы получить Ky=K*Kx, где K=xx/yy.

XG

YG

Операторы для автоматического масштабирования приведены ниже в модуле GR_F для различных случаев, определяемых значением параметра “pr”.

1: pr = 1. Пусть заданы нижняя, верхняя и левая границы области построения графика: down, up, left. Необходимо найти значение right при условиях: Ky = K *Kx и right<=GetMaxX. Если условие ограничения графика по длине экрана не выполняется, то полагается right:=GetMaxX; и значение "up" корректируется (уменьшается).

XG

YG

2: pr = 2. Пусть заданы левая, правая и нижняя границы области построения графика: left, right, down. Необходимо найти значение up при условиях: Kx = Ky / K и up>=0. Если условие ограничения графика по высоте экрана не выполняется, то полагается up:=0; и значение "right" корректируется (уменьшается).

4). Строим оси координат (начало координат x = 0, y = 0 ).

5). Строим график в виде последовательных отрезков используя аналоги графических процедур BGI:

moveto_G(x[1], y[1]);

for i:=2 to N do lineto_G(x[i], y[i]);

Ниже приводятся операторы модуля GR_F, наращивая который аналогами графических процедур BGI можно строить графики в расчетной области.

Unit GR_F; { модуль GR_F }

{$N+} {подключение сопроцессора}