uses graph, crt; type punkt=record x, y: real; end; type nelinurk=array[1..4]of punkt; procedure loo_nelinurk(x1, y1, x2, y2, x3, y3, x4, y4: real; var nn: nelinurk); begin nn[1].x:=x1; nn[1].y:=y1; nn[2].x:=x2; nn[2].y:=y2; nn[3].x:=x3; nn[3].y:=y3; nn[4].x:=x4; nn[4].y:=y4; end; procedure keera_nelinurk(nurk: real; var nn: nelinurk); var i: integer; abi:real; begin for i:=1 to 4 do begin abi:=nn[i].x; nn[i].x:=nn[i].x*cos(nurk)-nn[i].y*sin(nurk); nn[i].y:=abi*sin(nurk)+nn[i].y*cos(nurk); end; end; procedure joonista_nelinurk(nn: nelinurk; x, y: integer); var i: integer; begin for i:=1 to 3 do line(x+round(nn[i].x), y+round(nn[i].y), x+round(nn[i+1].x), y+round(nn[i+1].y)); line(x+round(nn[4].x), y+round(nn[4].y), x+round(nn[1].x), y+round(nn[1].y)); end; procedure joonista_keeratud_nelinurk(nn: nelinurk; x, y: integer; nurk: real); var abinelinurk: nelinurk; begin abinelinurk:=nn; keera_nelinurk(nurk, abinelinurk); joonista_nelinurk(abinelinurk, x, y); end; var nurk, raadius: real; d, m, keskx, kesky: integer; nn1: nelinurk; begin d:=detect; initgraph(d, m, ''); nurk:=0; keskx:=300; kesky:=100; raadius:=50; loo_nelinurk(-10, -5, 10, -5, 10, 5, -10, 5,nn1); repeat cleardevice; joonista_keeratud_nelinurk(nn1, 100,100, nurk); delay(25); nurk:=nurk+0.4; until keypressed; readkey; repeat cleardevice; joonista_keeratud_nelinurk(nn1, round(keskx+raadius*sin(nurk)), round(kesky+raadius*cos(nurk)), 3*nurk); delay(25); nurk:=nurk+0.1; until keypressed; closegraph; end.