Лекция

Тема: "Имитация движения в программе. Построение графиков функций".

План.

1. Основные приемы создания движущихся объектов.

2. Построение графиков функций.

 

1. Основные приемы создания движущихся объектов.

Для создание эффекта движущегося объекта можно воспользоваться следующим подходом:

1. Рисуем фигуру;

2. Делаем паузу;

3. Рисуем фигуру цветом фона (стираем);

4. Изменяем координаты и повторяем пункты 1-3.

При этом:

- если фигуру нужно сдвинуть влево, то уменьшается координата по оси Х;

- если фигуру нужно сдвинуть вправо, то увеличивается координата по оси Х;

- если фигуру нужно сдвинуть вверх, то уменьшается координата по оси Y;

- если фигуру нужно сдвинуть вниз, то увеличивается координата по оси Y;

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

При рисовании окружностей, эллипсов и дуг в качестве координаты служит всего одна точка - центр, поэтому никаких отличий при построении данных фигур в движении нет.

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

Пример: Составить программу, в которой бы окружность бегала по периметру экрана до нажатия на любую клавишу.

USES CRT,  GRAPH;

VAR I,  X,  Y, GRAPHDRIVER, GRAPHMODE, N, M: INTEGER;

BEGIN

CLRSCR;

GRAPHDRIVER:=DETECT;

INITGRAPH (GRAPHDRIVER, GRAPHMODE, 'C:\TP7\BGI');

N:=GETMAXX;

M:=GETMAXY;

SETBKCOLOR(15);

X:=40;

Y:=40;

REPEAT

REPEAT

SETCOLOR (4);

CIRCLE (X,Y,40);

DELAY(10);

SETCOLOR(15);

CIRCLE (X,Y,40);

X:=X+20

UNTIL X>=N-40;

REPEAT

SETCOLOR (4);

CIRCLE (X,Y,40);

DELAY(10);

SETCOLOR(15);

CIRCLE (X,Y,40);

Y:=Y+20;

UNTIL Y>=M-40;

REPEAT

SETCOLOR (4);

CIRCLE (X,Y,40);

DELAY(10);

SETCOLOR(15);

CIRCLE (X,Y,40);

X:=X-20

UNTIL X<=40;

REPEAT

SETCOLOR (4);

CIRCLE (X,Y,40);

DELAY(10);

SETCOLOR(15);

CIRCLE (X,Y,40);

Y:=Y-20;

UNTIL Y<=40

UNTIL KEYPRESSED;

CLOSEGRAPH

END.

Составить программу, чтобы эти же действия выполнял прямоугольник.

USES CRT,  GRAPH;

VAR I,  X,  Y, GRAPHDRIVER, GRAPHMODE, N, M: INTEGER;

BEGIN

CLRSCR;

GRAPHDRIVER:=DETECT;

INITGRAPH (GRAPHDRIVER, GRAPHMODE, 'C:\TP7\BGI');

N:=GETMAXX;

M:=GETMAXY;

SETBKCOLOR(15);

X:=0;

Y:=0;

REPEAT

REPEAT

SETCOLOR (4);

RECTANGLE (X,Y,X+40,Y+10);

DELAY(10);

SETCOLOR(15);

RECTANGLE (X,Y,X+40,Y+10);

X:=X+20

UNTIL X>=N-40;

REPEAT

SETCOLOR (4);

RECTANGLE (X,Y,X+40,Y+10);

DELAY(10);

SETCOLOR(15);

RECTANGLE (X,Y,X+40,Y+10);

Y:=Y+20;

UNTIL Y>=M-10;

REPEAT

SETCOLOR (4);

RECTANGLE (X,Y,X+40,Y+10);

DELAY(10);

SETCOLOR(15);

RECTANGLE (X,Y,X+40,Y+10);

X:=X-20

UNTIL X<=0;

REPEAT

SETCOLOR (4);

RECTANGLE (X,Y,X+40,Y+10);

DELAY(10);

SETCOLOR(15);

RECTANGLE (X,Y,X+40,Y+10);

Y:=Y-20;

UNTIL Y<=10

UNTIL KEYPRESSED;

CLOSEGRAPH;

END.

2. Построение графиков функций.

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

Для построения графиков следует воспользоваться программой, приведенной ниже:

USES CRT, GRAPH;

VAR N, M, I, I1, J, L, ND, NP: INTEGER;

A, B, C, D, X, Y, HX: REAL;

BEGIN

CLRSCR;

WRITE ('Введите область определения функции А и В : ');

READLN (A, B);

X:=A;

ND:=DETECT;

INITGRAPH (ND, NP, 'C:\TP7\BGI');

N:=GETMAXX;

M:=GETMAXY;

SETCOLOR(4);

RECTANGLE (1, 1,N-1, M-1); Рисуем рамку вокруг графика RECTANGLE (4, 4, N-4, M-4);

C:=100;                                       Допустимое положительное значение функции

D:=-C;

HX:=(B-A)/(N-10);

FOR I1:= 5 TO N-5 DO

PUTPIXEL(I1,TRUNC(-C/(D-C)*M),5);       Ось Y

FOR I1:=5 TO M-5 DO

PUTPIXEL(TRUNC((-A)/(B-A)*N ),I1,5);    Ось Х

FOR I1:= 5 TO N-5 DO

BEGIN

X:=X+HX;

Y:=ABS(SQR(X)-13);                           Функция

I:=TRUNC((X-A)/(B-A)*N);

J:=TRUNC((Y-C)/(D-C)*M);

PUTPIXEL(I, J, 15);

END;

READLN;

CLOSEGRAPH;

END.

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