uses graph, crt; type punkt=record x, y: real; end; nelinurk=object nurk:array[1..4] of punkt; procedure loo(x1, y1, x2, y2, x3, y3, x4, y4: real); procedure keera(kraad:real); procedure joonista(x, y: integer); procedure joonista_keeratult(x, y:integer; kraad: real); end; procedure nelinurk.loo(x1, y1, x2, y2, x3, y3, x4, y4: real); begin nurk[1].x:=x1; nurk[1].y:=y1; nurk[2].x:=x2; nurk[2].y:=y2; nurk[3].x:=x3; nurk[3].y:=y3; nurk[4].x:=x4; nurk[4].y:=y4; end; procedure nelinurk.keera(kraad: real); var i: integer; abi, radiaan:real; begin radiaan:=kraad*Pi/180; for i:=1 to 4 do begin abi:=nurk[i].x; nurk[i].x:=nurk[i].x*cos(radiaan)-nurk[i].y*sin(radiaan); nurk[i].y:=abi*sin(radiaan)+nurk[i].y*cos(radiaan); end; end; procedure nelinurk.joonista(x, y: integer); var i: integer; begin for i:=1 to 3 do line(x+round(nurk[i].x), y+round(nurk[i].y), x+round(nurk[i+1].x), y+round(nurk[i+1].y)); line(x+round(nurk[4].x), y+round(nurk[4].y), x+round(nurk[1].x), y+round(nurk[1].y)); end; procedure nelinurk.joonista_keeratult(x, y: integer; kraad: real); var abinelinurk: nelinurk; begin abinelinurk:=self; abinelinurk.keera(kraad); abinelinurk.joonista(x, y); end; var kraad: real; i, d, m: integer; nn: array[1..50]of nelinurk; kiirus: array[1..50] of real; varv, keskx, kesky: array[1..50] of integer; begin d:=detect; initgraph(d, m, ''); kraad:=0; for i:=1 to 50 do begin nn[i].loo(-10+random(40), -10+random(20), -10+random(40), -10+random(20), -10+random(20), -10+random(20), -10+random(20), -10+random(20)); kiirus[i]:=random; varv[i]:=1+random(14); keskx[i]:=100+random(400); kesky[i]:=100+random(300); end; repeat kraad:=kraad+20; cleardevice; for i:=1 to 50 do begin setColor(varv[i]); nn[i].joonista_keeratult(keskx[i], kesky[i], kraad*kiirus[i]); end; delay(40); until keypressed; end.