uses graph, crt; type point=record x: integer; y: integer; z: integer; end; points= array[1..100] of point; var p, p2 : points; keskp: point; num: integer; nurk1, nurk2: real; procedure go; var d, m: integer; begin p[1].x:=0; p[1].Y:=0; p[1].z:=200; p[2].x:=200; p[2].Y:=0; p[2].z:=0; p[3].x:=0; p[3].Y:=200; p[3].z:=0; p[4].x:=0; p[4].Y:=0; p[4].z:=0; p[5].x:=200; p[5].Y:=0; p[5].z:=0; p[6].x:=0; p[6].Y:=0; p[6].z:=200; p[7].x:=0; p[7].Y:=200; p[7].z:=200; p[8].x:=200; p[8].Y:=200; p[8].z:=0; p[9].x:=200; p[9].Y:=200; p[9].z:=200; num:=9; d:=detect; initgraph(d, m, ''); keskp.x:=getmaxx div 2; keskp.y:=getmaxy div 2; end; procedure draw(p: points; kp: point; kogus: integer); var i: integer; begin for i:=2 to kogus do begin line(kp.x+p[i-1].x, kp.y+p[i-1].y, kp.x+p[i].x, kp.y+p[i].y); end; line(kp.x+p[num].x, kp.y+p[num].y, kp.x+p[1].x, kp.y+p[1].y); end; procedure cir(pp: points; var pp2: points; kogus: integer; x1, x2: real); var i,k: integer; begin for i:=1 to kogus do begin pp2[i].x:=round(pp[i].x*cos(x1)-pp[i].y*sin(x1)); pp2[i].y:=round(-pp[i].x*sin(x1)+pp[i].y*cos(x1)); pp2[i].z:=pp[i].z; end; for i:=1 to kogus do begin pp2[i].y:=round(pp2[i].x*cos(x2)+pp2[i].z*sin(x2)); pp2[i].x:=round(-pp2[i].x*sin(x2)+pp2[i].z*cos(x2)); end; end; begin go; nurk1:=0; repeat setcolor(red);draw(p2, keskp, num); cir(p, p2, num, 0.3, nurk1); setcolor(red); draw(p2, keskp, num); delay(50); nurk1:=nurk1+Pi/60; until keypressed; closegraph; end.