Практическое задание N. 1. 60

1. С использованием процедуры OTREZOK построить (при alfa= 90o) прямоугольный и ромбический спиралевидные лабиринты из отрезков разного цвета.

2. Построить прямоугольник со сторонами разного цвета и основанием, движущимся согласно процедуре OTREZOK.

Следующий пример показывает использование рекурсии при построении узоров, напоминающих кружева. Задается размер "стежка" - короткой линии длиной dl, функция варьирования угла перемещения ugol в зависимости от номера шага n.

uses Graph;

var gD, gM, n, x, y, x1, y1, k: integer; dl, ugol, ugol_0, s, i: real;

{-----------------------------------------------------------------}

PROCEDURE ANGLE(x, y: integer);

begin n:= n+1;

ugol:=2*pi*n/s; ugol_0:=ugol; { равномерное увеличение угла по параметру n }

ugol:= ugol_0 + i*sin(k*ugol); { периодическое отклонение угла:

параметр i определяет амплитуду, k - частоту отклонений }

x1:= x + round(dl*cos(ugol)); { (x1, y1) - координаты следующей точки }

y1:= y + round(dl*sin(ugol));

Line(x, y, x1, y1); { рисуем "стежок" }

if n<s then ANGLE(x1, y1) { рекурсивный вызов }

end;

begin gD:= Detect; InitGraph(gD, gM, 'z:\tp7\bgi');

ugol_0:= 0; { начальное значение угла }

n:= -1; { начальное значение счетчика изменения угла }

x:= 300; y:= 70; { координаты начала рисования }

dl:= 4; { размер линии ("стежка") }

k:= 8; { количество циклических изменений угла }

s:= 500; { количество "стежков" узора }

i:= 2.; { амплитуда циклических изменений угла }


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: