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

Var I, j : integer;

ugol : real;

begin

for j:= 1 to n do begin

moveto(x[m,j],y[m,j]);{ установка курсора в m-ную точку ломаной }

for i:= 1 to m do begin { цикл рисования j-ой ломаной по m точкам }

setcolor(i mod 7+9);

lineto(x[i, j], y[i, j])

end end

end;

100

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

{ процедура расчета координат отражений точки (x, y) относительно центра узора}

Procedure MIRROR(n, m: integer; var x, y: mas);

Var I, j : integer;

r, ugol: real; { координаты точки в полярной системе координат }

begin

for i:= 1 to m do begin

if x[i,1]<>0 then ugol:=arctan(y[i,1]/x[i,1]) else ugol:=Pi/2;

r:= sqrt(1.*x[i,1]*x[i,1]+y[i,1]*y[i,1]);

for j:= 1 to n do begin

ugol:= 4*Pi*j/n - ugol;

x[i,j]:=round(r*cos(ugol)); y[i,j]:=round(r*sin(ugol)) end

end

end;

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

BEGIN Gd:= Detect; InitGraph(Gd, Gm, 'C:\tp7\bgi'); SetWriteMode(1);

xc:= GetmaxX div 2; yc:= GetmaxY div 2; { координаты центра узора }

n:= 12; { число зеркал }

m:= 10; { число узловых точек ломаной }

Rz:= 150; { длина линии зеркала }

for i:= 1 to n do begin alf:= 2. *PI*i/n;

xr:= xc + round(Rz*cos(alf));

yr:= yc - round(Rz*sin(alf));

setcolor(7); line(xr,yr,xc,yc) { построение линий зеркал }

end;

Randomize;

Repeat

for i:= 1 to m do begin {расчет координат точек исходной фигуры }

x[i,1]:= Random(200)+1; y[i,1]:= Random(100) end;

MIRROR(n, m, x, y); { расчет координат отраженных точек

в системе координат узора }

for i:= 1 to m do { расчет координат точек узора}

for j:= 1 to n do begin { в системе координат экрана }

x[i,j]:= x[i,j] + xc; y[i,j]:= y[i,j] + yc end;

UZOR(m,n,x,y); delay(1000); UZOR(m,n,x,y) { рисование узора }

Until KeyPressed; CloseGraph

END.

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

1. Смоделировать детский калейдоскоп для набора из трех разноцветных "кристаллов" ( 3-х, 4-х и 5-ти угольников), размещенных в одном секторе.

2. Смоделировать калейдоскоп с 8 осями симметрии. Смещая при каждом изменении фигуры на пять пикселов диапазон задания координат "х" точек исходной ломанной (10 раз увеличивая, затем 10 раз уменьшая получить пульсирующее движение фигур.

3. Смоделировать вращение узора, полученного из отражений ломанной линии.

  1. Смоделировать случайное перемещение узора, полученного из отражений ломанной линии. Контролировать выход узора за границу экрана.

101