PROGRAM PRG11_9;
USES GRAPH, CRT; VAR DRIVER, MODE, X, Y, I, T, Y0: INTEGER; BEGIN DRIVER:= DETECT; INITGRAPH(DRIVER, MODE, 'C: \BP\BGI'); SETCOLOR(3); SETFILLSTYLE(1, 1); FLOODFILL(1, 4, 1); T:= -4; Y0:= 10; SETCOLOR(16); FOR I:= 1 TO 150 DO BEGIN T:= T+2; Y0:= Y0+3; X:= GETMAXX DIV 2 +TRUNC(COS(T/10)*I); Y := Y0-TRUNC(SIN(T/10)*l); SETFILLSTYLE(1, 14); FILLELLIPSE(X, Y, 20, 20); DELAY(IOO); END; REPEAT UNTIL KEYPRESSED; CLOSEGRAPH END. Для решения задачи: - формируем тело программы и описываем переменные; - инициируем модуль GRAPH; - устанавливаем начальное значения угла поворота, цвет заливки кругов и цвет фона; - организуем цикл, в котором располагаем центры кругов по разворачивающейся спирали, вычисляя их координаты с помощью уравнения окружности; - фиксируем рисунок до тех пор, пока не будет нажата любая клавиша. Переменные: X, Y - координаты центра очередного маленького круга; У0 - смещение кругов по вертикали; I - переменная цикла; Т - угол поворота; DRIVER - тип графического драйвера; MODE - режим работы графического адаптера. Задача 11.10 Построить семейство одинаковых окружностей, центры которых лежат на горизонтально вращающемся отрезке, левый конец которого закреплен. PROGRAM PRG11_10; USES GRAPH, CRT; VAR DRIVER, MODE, X, Y, I, T, XO: INTEGER; BEGIN DRIVER:= DETECT; INITGRAPH(DRIVER, MODE, 'C: \BP\BGI'); SETFILLSTYLE(1, 1); FL00DFILL(1, 4, 1); T:= -4; X0:= 10; SETCOLOR(O); FOR I:= 1 TO 155 DO BEGIN T:= T+2; X0:= X0+4; X:= X0 +TRUNC(COS(T/10)*I); Y:= GETMAXY DIV 2-TRUNC(SIN(T/10)*l);
|