uses graph, crt; type punkt=record x, y: real; end; kuuenurk=object nurk:array[1..6] of punkt; procedure loo(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6: real); procedure keera(kraad:real); procedure joonista(x, y: integer); procedure joonista_keeratult(x, y:integer; kraad: real); end; procedure kuuenurk.loo(x1, y1, x2, y2, x3, y3, x4, y4, x5, y5, x6, y6: 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; nurk[5].x:=x5; nurk[5].y:=y5; nurk[6].x:=x6; nurk[6].y:=y6; end; procedure kuuenurk.keera(kraad: real); var i: integer; abi, radiaan:real; begin radiaan:=kraad*Pi/180; for i:=1 to 6 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 kuuenurk.joonista(x, y: integer); var i: integer; begin for i:=1 to 5 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[3].x), y+round(nurk[3].y), x+round(nurk[4].x), y+round(nurk[4].y)); line(x+round(nurk[5].x), y+round(nurk[5].y), x+round(nurk[6].x), y+round(nurk[6].y)); } line(x+round(nurk[6].x), y+round(nurk[6].y), x+round(nurk[1].x), y+round(nurk[1].y)); setcolor(green); end; procedure kuuenurk.joonista_keeratult(x, y: integer; kraad: real); var abinelinurk: kuuenurk; begin abinelinurk:=self; abinelinurk.keera(kraad); abinelinurk.joonista(x, y); end; var nurk, kraad, raadius: real; d, m, keskx, kesky: integer; kn1: kuuenurk; begin d:=detect; initgraph(d, m, ''); nurk:=0;kraad:=0; keskx:=300; kesky:=100; raadius:=50; kn1.loo(20, 0, 30, 30, 50, 30, 60, 0, 50, -30, 30, -30); repeat cleardevice; kn1.joonista_keeratult(100,100, kraad); delay(25); kraad:=kraad+10; until keypressed; readkey; repeat cleardevice; kn1.joonista_keeratult(round(keskx+raadius*sin(nurk)), round(kesky+raadius*cos(nurk)), kraad); delay(25); nurk:=nurk+0.01; kraad:=kraad-5; setcolor(blue); until keypressed; closegraph; end.